一组XSD可以定义复杂的树状结构。
例如,要表示此示例模型:
Detail
<?xml version="1.0" encoding="UTF-8"?>
<xs:schema
xmlns:xs="http://www.w3.org/2001/XMLSchema"
xmlns:bulk="urn:iso:std:iso:20022:tech:xsd:BulkSample"
xmlns:logFs="urn:LogicFileSample:xsd:$LogicFileSample.xsd"
targetNamespace="urn:LogicFileSample:xsd:$LogicFileSample.xsd"
elementFormDefault="qualified">
<!-- IMPORT -->
<xs:import namespace="urn:iso:std:iso:20022:tech:xsd:BulkSample" schemaLocation="BulkSample.xsd"/>
<xs:element name="LogicFileSampleRoot">
<xs:complexType>
<xs:sequence>
<xs:element name="SuperField01" type="logFs:Max5Text" minOccurs="1" maxOccurs="1"/>
<xs:element name="SuperField02" type="logFs:Max5Text" minOccurs="1" maxOccurs="1"/>
<!-- Bulks Container -->
<xs:element name="BulksContainer" type="bulk:BulkSegmentType" minOccurs="0" maxOccurs="unbounded"/>
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:simpleType name="Max5Text">
<xs:restriction base="xs:string">
<xs:pattern value="[0-9A-Z]{5,5}"/>
</xs:restriction>
</xs:simpleType>
</xs:schema>
和<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<xs:schema
xmlns="urn:iso:std:iso:20022:tech:xsd:BulkSample"
xmlns:xs="http://www.w3.org/2001/XMLSchema"
targetNamespace="urn:iso:std:iso:20022:tech:xsd:BulkSample"
elementFormDefault="qualified">
<xs:element name="Document" type="DocumentType"/>
<xs:complexType name="DocumentType">
<xs:sequence>
<xs:element name="BulksContainer" type="BulkSegmentType"/>
</xs:sequence>
</xs:complexType>
<xs:complexType name="BulkSegmentType">
<xs:sequence>
<xs:element name="BulkHeader" type="xs:string"/>
<xs:element name="DetailElement" type="xs:string" maxOccurs="unbounded"/>
</xs:sequence>
</xs:complexType>
</xs:schema>
有一些额外的属性,n
只是一个字符串。
您可以实施2个XSD架构:
1。 LogicFileSample.xsd
LogicFileSample
2。 BulkSample.xsd
<?xml version="1.0" encoding="UTF-8"?>
<logFs:LogicFileSampleRoot
xmlns:logFs="urn:LogicFileSample:xsd:$LogicFileSample.xsd"
xmlns:bulk="urn:iso:std:iso:20022:tech:xsd:BulkSample"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<!-- LogicFileSample info fields -->
<logFs:SuperField01>ABCDE</logFs:SuperField01>
<logFs:SuperField02>12345</logFs:SuperField02>
<!-- 3 BulksContainer -->
<logFs:BulksContainer>
<bulk:BulkHeader>BulkHeader_A</bulk:BulkHeader>
<bulk:DetailElement>DetailElement_A1</bulk:DetailElement>
<bulk:DetailElement>DetailElement_A2</bulk:DetailElement>
</logFs:BulksContainer>
<logFs:BulksContainer>
<bulk:BulkHeader>BulkHeader_B</bulk:BulkHeader>
<bulk:DetailElement>DetailElement_B1</bulk:DetailElement>
<bulk:DetailElement>DetailElement_B2</bulk:DetailElement>
<bulk:DetailElement>DetailElement_B3</bulk:DetailElement>
</logFs:BulksContainer>
<logFs:BulksContainer>
<bulk:BulkHeader>BulkHeader_C</bulk:BulkHeader>
<bulk:DetailElement>DetailElement_C1</bulk:DetailElement>
</logFs:BulksContainer>
</logFs:LogicFileSampleRoot>
现在,如果您创建一个XML文件,其中<?xml version="1.0" encoding="UTF-8"?>
<blk:Document
xmlns:blk="urn:iso:std:iso:20022:tech:xsd:BulkSample"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<blk:BulksContainer>
<blk:BulkHeader>BulkHeader_X</blk:BulkHeader>
<blk:DetailElement>DetailElement_X1</blk:DetailElement>
<blk:DetailElement>DetailElement_X2</blk:DetailElement>
</blk:BulksContainer>
</blk:Document>
个批量包装在Document
中,如下所示:
LogicFileSampleRoot
...你可以对“LogicFileSample.xsd”进行验证,它可以正常工作(很好)。
然后,您可以创建一个孤立的“批量”XML文件,解包。像这样:
SuperField
如果您对“BulkSample.xsd”进行验证,结果就可以了。
B U T。 。
如果您获取“解包”的XML文件并尝试验证“LogicFileSample.xsd”会发生什么?
嗯......它对“LogicFileSample.xsd”有效!
为什么呢?首先,根元素是.home-buttons {
width:600px;
display:flex;
flex-direction:column;
align-items:center;
}
.home-buttons .HomepageBtn {
flex:0 0 300px;
}
(而不是Date SrNo
SEL/2016APR01/002/000001 01
SEL/2016APR02/002/000001 04
SEL/2016APR03/002/000001 03
SEL/2016JAN01/002/000001 02
),并且强制属性元素substr('SEL/2016APR01/002/000001', 4,12)
...不存在!
请说,有人可以解释原因吗?
答案 0 :(得分:1)
为什么呢?首先,根元素是“文档”(而不是 “LogicFileSampleRoot”)
因为允许在XSD中全局定义的任何元素用作XML文档中的根元素。当您将另一个XSD导入基础XSD时,那么全局定义的元素也可以用作根元素。
并且强制属性“SuperField ...”不存在!
强制组件(元素,在这种情况下,实际上,但属性也是)仅对关联的父元素是必需的。因此,只有SuperField
才需要LogicFileSampleRoot
,不管父元素如何,都不需要<mvc:annotation-driven />
。