저는 XSLT 코드 중 일부를 살펴 봤습니다. 코드가 상당히 복잡해졌습니다. 내가 DRY 코드를 좋아하고 OO 녀석이기 때문에, 나는이 간단한 논리에 대해 간단한 함수를 호출하고 싶습니다. 내 문제는 어떤 경우에는 10 개의 매개 변수 또는 다른 호출이 4를 전달할 때와 같은 일부 매개 변수를 전달하는 경우입니다. 기본 매개 변수를 사용할 수 있지만 함수에 10 개의 매개 변수가있는 것은 단지 추한 것입니다. 일반적인 객체 지향 프로그래밍 언어에서는 10 개의 속성을 가진 객체를 만들고이를 통과시켜 호출자 나 질문의 서명을 일반적으로 변경하지 않고 속성을 확장 할 수 있습니다. xsl에 복잡한 유형이 있다는 것을 알고 있습니다. 그래서 이러한 기능에 대해 별도의 XSD를 작성해야하며, 다음과 같은 그것을 전달합니다XSLT는 객체를 매개 변수로 사용하여 작동합니다.
<xsl:function name="foo:doSomething">
<xsl:param name="someComplexType"/>
...
<xsl:variable name="field1" select="someComplexType/field1" />
</xsl:function>
을하지만 좀 10 개의 서로 다른 선택기 내 새로운 형태를 구축하는 방법? 이렇게하는 것이 최선의 방법일까요? 아니면 그냥 10 개의 모든 매개 변수를 전달해야합니까? 개념적으로 10 개의 다른 매개 변수가 하나의 객체와 관련되어 있기 때문에 이해할 수 있으며 이렇게하는 것이 더 깨끗해 보입니다.하지만 앞으로도 계속 xslt에 대한 최상의 방법을 찾고 있습니다.
같이, 스키마를 사용하지 않고, 하위 요소 요소에 전달할 수 있습니다 스키마 유형이 있다면 Saxon 9 EE와 같은 스키마 인식 프로세서가 필요합니다. 그거 있니? 그러나'as' 속성에 타입을 지정하지 않는 한 아무 것도 전달할 수 없습니다. –
복잡한 스키마 유형을 처리 할 수있는 프로세서가 있다고 생각합니다. 객체를 생성하려면 어떻게해야합니까? concat 문이 큰 xsl : variable 요소를 사용하고 있습니다 (concat이 얼마나 많은 매개 변수를 취할 수 있는지도 모름). 처리중인 문서 외부에서 복잡한 스키마 유형을 생성하는 방법은 무엇입니까? –
스키마에서 모든 유형을 정의해야합니다. XSLT 코드 내부에서 인스턴스를 만드는 것은 모든 XML에서와 마찬가지로 수행되며 리터럴을 사용하거나 요소 이름을 계산해야 할 경우'xsl : element '를 사용하면됩니다. 따라서 ... xsl : variable>'. –