저는 xslt/xsd-programming의 초보자이므로 XMLSpy를 사용하여 xml2xml 변환을 만듭니다. 두 xml 모두 xsd가 있습니다. 아쉽게도 다음 코드는 유효하지 않습니다.xslt는 xsl : for-each 대신 element를 기대합니다.
<xsl:template match="/">
<table xsi:noNamespaceSchemaLocation="table.xsd" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<xsl:for-each select="table/body/line">
<row>
</row>
</xsl:for-each>
</table>
</xsl:template>
오류 메시지는 테이블 다음에 행 요소가 필요하다고 표시합니다.
세부 사항 (번역) : 요소 <xsl:for-each>
은 요소 <table>
의 유형 {익명}을 기대하지 않았습니다.
xsd에 대한 참조를 제거하거나 for-each 문을 제거하면 문제를 해결할 수 있습니다.
그러나 무엇이 잘못되었는지 알 수 없습니다. 제 이해를 위해 for-each-loop는 첫 xml의 각 줄에 <row>
태그를 반복해야합니다.
다음은 대상의 xsd의 일부입니다.
<xs:element name="table">
<xs:complexType>
<xs:sequence>
<xs:element ref="row" maxOccurs="unbounded"/>
<xs:element ref="Metadata" minOccurs="0"/>
</xs:sequence>
</xs:complexType>
</xs:element>
글쎄, 스키마는 XSLT 변환의 결과가 XSLT의 모습을 어떻게하지,보고하도록되어 방법을 정의합니다. XSLT 코드는 일반적으로 XSLT 명령어와 결과 요소가 섞여 있으며 분명히 결과에 대한 스키마를 따르지 않습니다. 그래서 XSLT를 작성할 때 단순히 메시지를 무시합니다. 아니면 XMLSpy에서 XSLT 변환을 실행하지 못하게하는 오류가 발생합니까? –
사실, XSL 변환을 시도하지 않았지만 작동합니다. 나는 지금 그 메시지를 무시할 것으로 생각한다. 감사. –