XML 和 XSD 使用限制验证失败
XML and XSD validation failed using restriction
使用限制验证后出现错误未知节点:限制
我找不到错误。有人可以在 XSD 中帮助我吗?
这是我的 XML :
<?xml version="1.0" encoding="UTF-8"?>
<DataChannelconfig>
<DataTypeVersion>1</DataTypeVersion>
<FileformatVersion>0</FileformatVersion>
<DataChannel>
<Name>Supply Pump Flow Speed</Name>
<Datatype>Numeric</Datatype>
<Tag>Supply_Pump_Flow_Speed</Tag>
<Graph>
<Enable>0</Enable>
<AxisNo>0</AxisNo>
<Colour>255.0.225</Colour>
</Graph>
<Table>
<Enable>1</Enable>
<Table-ID>0</Table-ID>
<Table-Row>9</Table-Row>
<Unit>ml/min</Unit>
</Table>
</DataChannel>
</DataChannelconfig>
这是我的XSD:
<xs:schema attributeFormDefault="unqualified" elementFormDefault="qualified xmlns:xs="http://www.w3.org/2001/XMLSchema">
<xs:element name="DataChannelconfig">
<xs:complexType>
<xs:sequence>
<xs:element name="DataTypeVersion" type="xs:byte"/>
<xs:element name="FileformatVersion" type="xs:byte" />
<xs:element name="DataChannel" type="xs:string">
<xs:complexType>
<xs:sequence>
<xs:element name="Name" type="xs:string"/>
<xs:attribute name="Name">
<xs:simpleType>
<xs:restriction base="xs:string">
<xs:pattern value="[a-zA-Z0-9_.'!@#$%^*()]{20}"/
</xs:restriction>
</xs:simpleType>
</xs:attribute>
<xs:element name="Datatype" type="xs:string"/>
<xs:attribute name="Datatype">
<xs:simpleType>
<xs:restriction base="xs:string">
<xs:pattern value="[a-zA-Z0-9_.'!@#$%^*()]{20}"/>
</xs:restriction>
</xs:simpleType>
</xs:attribute>
<xs:element name="Tag" type="xs:string"/>
<xs:attribute name="Datatype">
<xs:simpleType>
<xs:restriction base="xs:string">
<xs:pattern value="[a-zA-Z0-9_.'!@#$%^*()]{20}"/>
</xs:restriction>
</xs:simpleType>
</xs:attribute>
<xs:element name="Graph">
<xs:complexType>
<xs:sequence>
<xs:element type="xs:byte" name="Enable"/>
<xs:restriction base="xs:byte">
<xs:minInclusive value="0"/>
<xs:maxInclusive value="1"/>
</xs:restriction>
<xs:element type="xs:byte" name="AxisNo"/>
<xs:restriction base="xs:byte">
<xs:minInclusive value="0"/>
<xs:maxInclusive value="1"/>
</xs:restriction>
<xs:element type="xs:string" name="Colour"/>
<xs:restriction base="xs:string">
<xs:pattern value="[0-9]{3}[.][0-9]{3}[.][0-9]{3}"/>
</xs:restriction>
</xs:sequence>
</xs:complexType>
<xs:element name="Table">
<xs:complexType>
<xs:sequence>
<xs:element type="xs:byte" name="Enable"/>
<xs:restriction base="xs:byte">
<xs:minInclusive value="0"/>
<xs:maxInclusive value="1"/>
</xs:restriction>
<xs:element type="xs:byte" name="Table-ID"/>
<xs:restriction base="xs:byte">
<xs:minInclusive value="1"/>
<xs:maxInclusive value="3"/>
</xs:restriction>
<xs:element type="xs:string" name="Table-Row"/>
<xs:restriction base="xs:byte">
<xs:minInclusive value="0"/>
<xs:maxInclusive value="14"/>
</xs:restriction>
<xs:element type="xs:string" name="Unit"/>
<xs:restriction base="xs:string">
<xs:pattern value="[a-zA-Z0-9_.'!@#$%^*()]{20}"/>
</xs:restriction>
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:schema>
我的 XSD 文件有什么问题?
使用 Visual Studio 尝试打开我得到的架构
Failed to load schema.
Reason :
The 'http://www.w3.org/2001/XMLSchema:attribute' element is not supported in this contex
问题是
您在序列中声明了同名的元素和属性。属性应该位于序列之外(之后)。但是你的样本没有任何属性,所以我把它们去掉了。
您忘记了这一行的结尾>
<xs:pattern value="[a-zA-Z0-9_.'!@#$%^*()]{20}"/
元素图形缺少结束标记
Enable、AxisNo、Color等元素是自终止的,它们需要在需要被类型节点包裹的限制之后终止,而不是元素上声明的类型。
这是应该的样子。
<xs:schema attributeFormDefault="unqualified" elementFormDefault="qualified" xmlns:xs="http://www.w3.org/2001/XMLSchema">
<xs:element name="DataChannelconfig">
<xs:complexType>
<xs:sequence>
<xs:element name="DataTypeVersion" type="xs:byte"/>
<xs:element name="FileformatVersion" type="xs:byte" />
<xs:element name="DataChannel">
<xs:complexType>
<xs:sequence>
<xs:element name="Name">
<xs:simpleType>
<xs:restriction base="xs:string">
<xs:pattern value="[a-zA-Z0-9_.'!@#$%^*()]{20}"/>
</xs:restriction>
</xs:simpleType>
</xs:element>
<xs:element name="Datatype">
<xs:simpleType>
<xs:restriction base="xs:string">
<xs:pattern value="[a-zA-Z0-9_.'!@#$%^*()]{20}"/>
</xs:restriction>
</xs:simpleType>
</xs:element>
<xs:element name="Tag" type="xs:string"/>
<xs:element name="Graph">
<xs:complexType>
<xs:sequence>
<xs:element name="Enable">
<xs:simpleType>
<xs:restriction base="xs:byte">
<xs:minInclusive value="0"/>
<xs:maxInclusive value="1"/>
</xs:restriction>
</xs:simpleType>
</xs:element>
<xs:element name="AxisNo">
<xs:simpleType>
<xs:restriction base="xs:byte">
<xs:minInclusive value="0"/>
<xs:maxInclusive value="1"/>
</xs:restriction>
</xs:simpleType>
</xs:element>
<xs:element name="Colour">
<xs:simpleType>
<xs:restriction base="xs:string">
<xs:pattern value="[0-9]{3}[.][0-9]{3}[.][0-9]{3}"/>
</xs:restriction>
</xs:simpleType>
</xs:element>
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element name="Table">
<xs:complexType>
<xs:sequence>
<xs:element name="Enable">
<xs:simpleType>
<xs:restriction base="xs:byte">
<xs:minInclusive value="0"/>
<xs:maxInclusive value="1"/>
</xs:restriction>
</xs:simpleType>
</xs:element>
<xs:element name="Table-ID">
<xs:simpleType>
<xs:restriction base="xs:byte">
<xs:minInclusive value="1"/>
<xs:maxInclusive value="3"/>
</xs:restriction>
</xs:simpleType>
</xs:element>
<xs:element name="Table-Row">
<xs:simpleType>
<xs:restriction base="xs:byte">
<xs:minInclusive value="0"/>
<xs:maxInclusive value="14"/>
</xs:restriction>
</xs:simpleType>
</xs:element>
<xs:element name="Unit">
<xs:simpleType>
<xs:restriction base="xs:string">
<xs:pattern value="[a-zA-Z0-9_.'!@#$%^*()]{20}"/>
</xs:restriction>
</xs:simpleType>
</xs:element>
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:schema>
对您的示例使用上述模式会得到以下输出
The 'Name' element is invalid - The value 'Supply Pump Flow Speed' is invalid according to its datatype 'String' - The Pattern constraint failed.
The 'Datatype' element is invalid - The value 'Numeric' is invalid according to its datatype 'String' - The Pattern constraint failed.
The 'Colour' element is invalid - The value '255.0.225' is invalid according to its datatype 'String' - The Pattern constraint failed.
The 'Table-ID' element is invalid - The value '0' is invalid according to its datatype 'Byte' - The MinInclusive constraint failed.
The 'Unit' element is invalid - The value 'ml/min' is invalid according to its datatype 'String' - The Pattern constraint failed.
使用限制验证后出现错误未知节点:限制 我找不到错误。有人可以在 XSD 中帮助我吗? 这是我的 XML :
<?xml version="1.0" encoding="UTF-8"?>
<DataChannelconfig>
<DataTypeVersion>1</DataTypeVersion>
<FileformatVersion>0</FileformatVersion>
<DataChannel>
<Name>Supply Pump Flow Speed</Name>
<Datatype>Numeric</Datatype>
<Tag>Supply_Pump_Flow_Speed</Tag>
<Graph>
<Enable>0</Enable>
<AxisNo>0</AxisNo>
<Colour>255.0.225</Colour>
</Graph>
<Table>
<Enable>1</Enable>
<Table-ID>0</Table-ID>
<Table-Row>9</Table-Row>
<Unit>ml/min</Unit>
</Table>
</DataChannel>
</DataChannelconfig>
这是我的XSD:
<xs:schema attributeFormDefault="unqualified" elementFormDefault="qualified xmlns:xs="http://www.w3.org/2001/XMLSchema">
<xs:element name="DataChannelconfig">
<xs:complexType>
<xs:sequence>
<xs:element name="DataTypeVersion" type="xs:byte"/>
<xs:element name="FileformatVersion" type="xs:byte" />
<xs:element name="DataChannel" type="xs:string">
<xs:complexType>
<xs:sequence>
<xs:element name="Name" type="xs:string"/>
<xs:attribute name="Name">
<xs:simpleType>
<xs:restriction base="xs:string">
<xs:pattern value="[a-zA-Z0-9_.'!@#$%^*()]{20}"/
</xs:restriction>
</xs:simpleType>
</xs:attribute>
<xs:element name="Datatype" type="xs:string"/>
<xs:attribute name="Datatype">
<xs:simpleType>
<xs:restriction base="xs:string">
<xs:pattern value="[a-zA-Z0-9_.'!@#$%^*()]{20}"/>
</xs:restriction>
</xs:simpleType>
</xs:attribute>
<xs:element name="Tag" type="xs:string"/>
<xs:attribute name="Datatype">
<xs:simpleType>
<xs:restriction base="xs:string">
<xs:pattern value="[a-zA-Z0-9_.'!@#$%^*()]{20}"/>
</xs:restriction>
</xs:simpleType>
</xs:attribute>
<xs:element name="Graph">
<xs:complexType>
<xs:sequence>
<xs:element type="xs:byte" name="Enable"/>
<xs:restriction base="xs:byte">
<xs:minInclusive value="0"/>
<xs:maxInclusive value="1"/>
</xs:restriction>
<xs:element type="xs:byte" name="AxisNo"/>
<xs:restriction base="xs:byte">
<xs:minInclusive value="0"/>
<xs:maxInclusive value="1"/>
</xs:restriction>
<xs:element type="xs:string" name="Colour"/>
<xs:restriction base="xs:string">
<xs:pattern value="[0-9]{3}[.][0-9]{3}[.][0-9]{3}"/>
</xs:restriction>
</xs:sequence>
</xs:complexType>
<xs:element name="Table">
<xs:complexType>
<xs:sequence>
<xs:element type="xs:byte" name="Enable"/>
<xs:restriction base="xs:byte">
<xs:minInclusive value="0"/>
<xs:maxInclusive value="1"/>
</xs:restriction>
<xs:element type="xs:byte" name="Table-ID"/>
<xs:restriction base="xs:byte">
<xs:minInclusive value="1"/>
<xs:maxInclusive value="3"/>
</xs:restriction>
<xs:element type="xs:string" name="Table-Row"/>
<xs:restriction base="xs:byte">
<xs:minInclusive value="0"/>
<xs:maxInclusive value="14"/>
</xs:restriction>
<xs:element type="xs:string" name="Unit"/>
<xs:restriction base="xs:string">
<xs:pattern value="[a-zA-Z0-9_.'!@#$%^*()]{20}"/>
</xs:restriction>
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:schema>
我的 XSD 文件有什么问题?
使用 Visual Studio 尝试打开我得到的架构
Failed to load schema.
Reason : The 'http://www.w3.org/2001/XMLSchema:attribute' element is not supported in this contex
问题是
您在序列中声明了同名的元素和属性。属性应该位于序列之外(之后)。但是你的样本没有任何属性,所以我把它们去掉了。
您忘记了这一行的结尾>
<xs:pattern value="[a-zA-Z0-9_.'!@#$%^*()]{20}"/
元素图形缺少结束标记
Enable、AxisNo、Color等元素是自终止的,它们需要在需要被类型节点包裹的限制之后终止,而不是元素上声明的类型。
这是应该的样子。
<xs:schema attributeFormDefault="unqualified" elementFormDefault="qualified" xmlns:xs="http://www.w3.org/2001/XMLSchema">
<xs:element name="DataChannelconfig">
<xs:complexType>
<xs:sequence>
<xs:element name="DataTypeVersion" type="xs:byte"/>
<xs:element name="FileformatVersion" type="xs:byte" />
<xs:element name="DataChannel">
<xs:complexType>
<xs:sequence>
<xs:element name="Name">
<xs:simpleType>
<xs:restriction base="xs:string">
<xs:pattern value="[a-zA-Z0-9_.'!@#$%^*()]{20}"/>
</xs:restriction>
</xs:simpleType>
</xs:element>
<xs:element name="Datatype">
<xs:simpleType>
<xs:restriction base="xs:string">
<xs:pattern value="[a-zA-Z0-9_.'!@#$%^*()]{20}"/>
</xs:restriction>
</xs:simpleType>
</xs:element>
<xs:element name="Tag" type="xs:string"/>
<xs:element name="Graph">
<xs:complexType>
<xs:sequence>
<xs:element name="Enable">
<xs:simpleType>
<xs:restriction base="xs:byte">
<xs:minInclusive value="0"/>
<xs:maxInclusive value="1"/>
</xs:restriction>
</xs:simpleType>
</xs:element>
<xs:element name="AxisNo">
<xs:simpleType>
<xs:restriction base="xs:byte">
<xs:minInclusive value="0"/>
<xs:maxInclusive value="1"/>
</xs:restriction>
</xs:simpleType>
</xs:element>
<xs:element name="Colour">
<xs:simpleType>
<xs:restriction base="xs:string">
<xs:pattern value="[0-9]{3}[.][0-9]{3}[.][0-9]{3}"/>
</xs:restriction>
</xs:simpleType>
</xs:element>
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element name="Table">
<xs:complexType>
<xs:sequence>
<xs:element name="Enable">
<xs:simpleType>
<xs:restriction base="xs:byte">
<xs:minInclusive value="0"/>
<xs:maxInclusive value="1"/>
</xs:restriction>
</xs:simpleType>
</xs:element>
<xs:element name="Table-ID">
<xs:simpleType>
<xs:restriction base="xs:byte">
<xs:minInclusive value="1"/>
<xs:maxInclusive value="3"/>
</xs:restriction>
</xs:simpleType>
</xs:element>
<xs:element name="Table-Row">
<xs:simpleType>
<xs:restriction base="xs:byte">
<xs:minInclusive value="0"/>
<xs:maxInclusive value="14"/>
</xs:restriction>
</xs:simpleType>
</xs:element>
<xs:element name="Unit">
<xs:simpleType>
<xs:restriction base="xs:string">
<xs:pattern value="[a-zA-Z0-9_.'!@#$%^*()]{20}"/>
</xs:restriction>
</xs:simpleType>
</xs:element>
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:schema>
对您的示例使用上述模式会得到以下输出
The 'Name' element is invalid - The value 'Supply Pump Flow Speed' is invalid according to its datatype 'String' - The Pattern constraint failed.
The 'Datatype' element is invalid - The value 'Numeric' is invalid according to its datatype 'String' - The Pattern constraint failed.
The 'Colour' element is invalid - The value '255.0.225' is invalid according to its datatype 'String' - The Pattern constraint failed.
The 'Table-ID' element is invalid - The value '0' is invalid according to its datatype 'Byte' - The MinInclusive constraint failed.
The 'Unit' element is invalid - The value 'ml/min' is invalid according to its datatype 'String' - The Pattern constraint failed.