Xml schema, how to make sure one element exists with a specific attribute value

前端 未结 1 1666
遥遥无期
遥遥无期 2021-01-16 05:02

How do I enforce the existing of an element with a specific attribute value in the XML?

For example:


  

        
相关标签:
1条回答
  • 2021-01-16 05:51

    If you're using XML Schema 1.0, you cannot express the constraint directly. You could do it outside of XML Schema 1.0 via Schematron or XSLT directly.

    If you're using XML Schema 1.1, you can specify co-occurrence constraints via xs:assert:

    <?xml version="1.0" encoding="utf-8"?>
    <xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"
               version="1.0">
      <xs:element name="events">
        <xs:complexType>
          <xs:sequence>
            <xs:element name="event" minOccurs="1" maxOccurs="unbounded">
              <xs:complexType>
                <xs:attribute name="type" type="xs:string"/>
                <xs:attribute name="desc" type="xs:string"/>
              </xs:complexType>
            </xs:element>
          </xs:sequence>
          <xs:assert test="count(event[@type = 'system']) = 1"/>
        </xs:complexType>
      </xs:element>
    </xs:schema>
    
    0 讨论(0)
提交回复
热议问题