2

我的 XML 文本如下所示:

<?xml version="1.0" encoding="UTF-8" ?>
<root>
    <create>a</create>
    <create>b</create>
    <createname>c</createname>
    <createname>d</createname>
    <primary>k</primary>
    <column>e</column>
    <column>f</column>
</root>

通常,元素“create”、“createname”、“column”至少可以出现一次(1 到无界),元素“primary”应该只出现一次,所有这些元素可以按任意顺序排列。

"xsd:all" 只允许 0 或一次;"xsd:sequce" 表示元素必须按顺序显示,

如何使用 xsd 来实现此验证?

4

1 回答 1

0

简而言之,你不能。XML Schema 依赖于顺序来强制执行元素的计数(“all”除外)。大多数“编组”库也需要订单。如果您无法控制 XML 文件,一个建议是在验证之前使用 XSL 对其进行转换。

   <xsl:template match="/">
    <xsl:element name="root"></xsl:element>
    <xsl:for-each select="create">
        <xsl:copy-of select="."/>
    </xsl:for-each>
    <xsl:for-each select="createname">
        <xsl:for-each select="createname"></xsl:for-each>
    </xsl:for-each>
   </xsl:template>
于 2012-12-24T19:50:10.400 回答