如何将子 XML 元素与 XSD 中的文本混合
How to mix child XML elements with text in XSD
考虑以下 XML:
<name stamped-on-monument="unknown" remarks="name 2001/12/20">
0011953U556K
<aka stamped-on-monument="unknown" remarks="">
00153U556K
</aka>
</name>
元素中包含 "inner text" 值和子项是否可以接受?
如何在 XML 架构文档中定义它?
是的,您描述的是 mixed content,可以通过 xs:complexType
上的 mixed="true"
指定:
<?xml version="1.0" encoding="UTF-8"?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema">
<xs:element name="name">
<xs:complexType mixed="true">
<xs:sequence>
<xs:element name="aka">
<xs:complexType>
<xs:simpleContent>
<xs:extension base="xs:string">
<xs:attributeGroup ref="commonAttrs"/>
</xs:extension>
</xs:simpleContent>
</xs:complexType>
</xs:element>
</xs:sequence>
<xs:attributeGroup ref="commonAttrs"/>
</xs:complexType>
</xs:element>
<xs:attributeGroup name="commonAttrs">
<xs:attribute name="stamped-on-monument"/>
<xs:attribute name="remarks"/>
</xs:attributeGroup>
</xs:schema>
我认为这应该可以满足您的需求
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" elementFormDefault="qualified" attributeFormDefault="unqualified">
<xs:element name="name" type="xs:string">
<xs:complexType>
<xs:sequence>
<xs:element name="aka" type="xs:string">
<xs:complexType>
<xs:attribute name="stamped-on-monument" type="xs:string"></xs:attribute>
<xs:attribute name="remarks" type="xs:string"></xs:attribute>
</xs:complexType>
</xs:element>
</xs:sequence>
<xs:attribute name="stamped-on-monument" type="xs:string"></xs:attribute>
<xs:attribute name="remarks" type="xs:string"></xs:attribute>
</xs:complexType>
</xs:element>
考虑以下 XML:
<name stamped-on-monument="unknown" remarks="name 2001/12/20">
0011953U556K
<aka stamped-on-monument="unknown" remarks="">
00153U556K
</aka>
</name>
元素中包含 "inner text" 值和子项是否可以接受?
如何在 XML 架构文档中定义它?
是的,您描述的是 mixed content,可以通过 xs:complexType
上的 mixed="true"
指定:
<?xml version="1.0" encoding="UTF-8"?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema">
<xs:element name="name">
<xs:complexType mixed="true">
<xs:sequence>
<xs:element name="aka">
<xs:complexType>
<xs:simpleContent>
<xs:extension base="xs:string">
<xs:attributeGroup ref="commonAttrs"/>
</xs:extension>
</xs:simpleContent>
</xs:complexType>
</xs:element>
</xs:sequence>
<xs:attributeGroup ref="commonAttrs"/>
</xs:complexType>
</xs:element>
<xs:attributeGroup name="commonAttrs">
<xs:attribute name="stamped-on-monument"/>
<xs:attribute name="remarks"/>
</xs:attributeGroup>
</xs:schema>
我认为这应该可以满足您的需求
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" elementFormDefault="qualified" attributeFormDefault="unqualified">
<xs:element name="name" type="xs:string">
<xs:complexType>
<xs:sequence>
<xs:element name="aka" type="xs:string">
<xs:complexType>
<xs:attribute name="stamped-on-monument" type="xs:string"></xs:attribute>
<xs:attribute name="remarks" type="xs:string"></xs:attribute>
</xs:complexType>
</xs:element>
</xs:sequence>
<xs:attribute name="stamped-on-monument" type="xs:string"></xs:attribute>
<xs:attribute name="remarks" type="xs:string"></xs:attribute>
</xs:complexType>
</xs:element>