【发布时间】:2015-06-14 18:47:27
【问题描述】:
我有如下所示的 XML:
<?xml version="1.0" encoding="utf-8"?>
<main>
<bbcor Location="string" Name="string">
<PipeDiameter_INCH>3.1415926535</PipeDiameter_INCH>
<InitialPressure_PSI>3335.566</InitialPressure_PSI>
<LWISE TotalSection="2">
<DL_FT>535.00</DL_FT> <HL_FT>653.00</HL_FT>
<DL_FT>245.98</DL_FT> <HL_FT>395.0</HL_FT>
</LWISE>
</bbcor>
</main>
我正在尝试为上述文件制作 XSD 验证器,但卡在交替元素中,即
<DL_FT>2.4</DL_FT> <HL_FT>234.00</HL_FT>
<DL_FT>3.5</DL_FT> <HL_FT>456.00</HL_FT>
<DL_FT>6.8</DL_FT> <HL_FT>678.00</HL_FT>
我尝试了在线生成器等,但没有一个提供所需的 XSD。当前的 XSD 文件如下所示:
<?xml version="1.0" encoding="utf-8"?>
<xsd:schema attributeFormDefault="unqualified"
elementFormDefault="qualified"
version="1.0" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
<xsd:element name="main">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="bbcor">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="PipeDiameter_INCH" type="xsd:decimal" />
<xsd:element name="InitialPressure_PSI" type="xsd:decimal" />
<xsd:element name="LWISE">
<xsd:complexType>
<xsd:sequence>
<xsd:element maxOccurs="unbounded" name="DL_FT" type="xsd:decimal" />
<xsd:element maxOccurs="unbounded" name="HL_FT" type="xsd:decimal" />
</xsd:sequence>
<xsd:attribute name="TotalSection" type="xsd:int" />
</xsd:complexType>
</xsd:element>
</xsd:sequence>
<xsd:attribute name="Location" type="xsd:string" />
<xsd:attribute name="Name" type="xsd:string" />
</xsd:complexType>
</xsd:element>
</xsd:sequence>
</xsd:complexType>
</xsd:element>
</xsd:schema>
上面的 XSD 有什么问题?我正在使用 xmllint 来验证上面的 XML 文件。 XSD 不允许替代元素吗?当元素发生时它起作用了
<DL_FT>2.45</DL_FT>
<DL_FT>2.44</DL_FT>
<DL_FT>2.35</DL_FT>
<HL_FT>245</HL_FT>
<HL_FT>445</HL_FT>
<HL_FT>545</HL_FT>
【问题讨论】: