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 回 (1 ~無制限)、要素 "primary" は 1 回だけ出現する必要があり、これらの要素はすべて任意の順序で指定できます。

"xsd:all" は 0 または 1 回のみ許可されます。「xsd:sequece」は、要素が順番に表示される必要があることを意味します。

xsd を使用してこの検証を行うにはどうすればよいですか?

4

1 に答える 1

0

要するに、できません。XML スキーマは、要素の数を適用するために順序に依存しています (「すべて」を除く)。また、ほとんどの「マーシャリング」ライブラリには注文が必要です。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 に答える