簡體   English   中英

包含屬性和文本的XML元素和XSD驗證

[英]XML element and XSD validation that contains both attribute and text

我正在努力弄清楚如何構造XSD驗證,以便它可以正確驗證我的XML文件。

我的元素languages包含同時包含文本和id字段的元素language

我的驗證程序告訴我,我有: Validation Error: The element 'languages' has invalid child element 'language'.

如何正確構造它? 我的language元素是否還需要complexType

XSD

<?xml version="1.0" encoding="ISO-8859-1"?>
<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema">
    <xsd:element name="dataset">
        <xsd:complexType>
            <xsd:all>
                <xsd:element name="languages">
                    <xsd:complexType>
                        <xsd:sequence>
                            <xsd:element name="language">
                                <xsd:complexType mixed="true">
                                    <xsd:simpleContent>
                                        <xsd:extension base="xsd:string">
                                            <xsd:attribute name="id" type="xsd:integer"/>
                                        </xsd:extension>
                                    </xsd:simpleContent>
                                </xsd:complexType>
                            </xsd:element>
                        </xsd:sequence>
                    </xsd:complexType>
                </xsd:element>
            </xsd:all>
        </xsd:complexType>
    </xsd:element>
</xsd:schema>

XML

<?xml version="1.0" encoding="ISO-8859-1"?>
<dataset>
    <languages>
        <language id="0">C</language>
        <language id="1">C++</language> 
    </languages>
</dataset>

以下XSD將驗證您的XML:

<?xml version="1.0" encoding="ISO-8859-1"?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema">

  <xs:element name="dataset">
    <xs:complexType>
      <xs:sequence>
        <xs:element name="languages">
          <xs:complexType>
            <xs:sequence>
              <xs:element name="language" maxOccurs="unbounded">
                <xs:complexType>
                  <xs:simpleContent>
                    <xs:extension base="xs:string">
                      <xs:attribute name="id">
                      </xs:attribute>
                    </xs:extension>
                  </xs:simpleContent>
                </xs:complexType>
              </xs:element>
            </xs:sequence>
          </xs:complexType>
        </xs:element>
      </xs:sequence>
    </xs:complexType>
  </xs:element>

</xs:schema>

筆記:

  • 錯誤消息與基數有關( maxOccurs="unbounded" )。
  • 除非language旨在將可能的標記與內容中的文本混合在一起,否則您可能不希望使用mixed="true"

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM