私はxslt/xsd-programmingの初心者ですから、XMLSpyを使ってxml2xml変換を作成しています。両方のxmlのために私はxsdを持っています。残念ながら、次のコードは有効ではありません。xsltはxsl:for-eachの代わりに要素を受け取ります
<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変換を実行しようとはしていませんでしたが、動作します。私は今メッセージを無視すると思う。ありがとう。 –