由于我是 xslt/xsd 编程的初学者,我使用 XMLSpy 创建 xml2xml 转换。对于这两个 xml,我都有一个 xsd。不幸的是,以下代码段无效。
<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>
不属于 {anonymous} 类型的元素<table>
。
该问题可以通过删除对 xsd 的引用或删除 for-each 语句来解决。
但是,我无法弄清楚出了什么问题。据我了解,for-each-loop 应该只<row>
为第一个 xml 中的每一行重复标签。
这是目标的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>