XSD : 编译自定义类型失败
XSD : fail to compile custom type
我尝试为此 xml 文件创建一个 xsd 计划:
<?xml version="1.0"?>
<Listelocataires xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="locataires.xsd">
<NoImmeuble>221B</NoImmeuble>
<etage n="1">
<appartement cote="gauche">
<nom>Watson</nom>
</appartement>
<appartement cote="droit">
<nom>Holmes</nom>
<telephone>020 7465 4321></telephone>
</appartement>
</etage>
<etage n="0">
<appartement cote="droit">
<nom>Hudson</nom>
<telephone>020 7465 4321></telephone>
</appartement>
</etage>
</Listelocataires>
我尝试创建一个自定义类型来验证电话号码,但它不接受我的回答,这是我的 xsd 架构:
<?xml version="1.0"?>
<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema">
<xsd:element name="Listelocataires">
<xsd:complexType>
<xsd:sequence>
<xsd:element ref="NoImmeuble" minOccurs="1" maxOccurs="unbounded" />
<xsd:element ref="etage" minOccurs="1" maxOccurs="unbounded" />
</xsd:sequence>
</xsd:complexType>
</xsd:element>
<xsd:element name="NoImmeuble" type="xsd:string" />
<xsd:element name="etage">
<xsd:complexType>
<xsd:sequence>
<xsd:element ref="appartement" minOccurs="1" maxOccurs="unbounded" />
</xsd:sequence>
<xsd:attribute name="n" type="xsd:string" use="required" />
</xsd:complexType>
</xsd:element>
<xsd:element name="appartement">
<xsd:complexType>
<xsd:sequence>
<xsd:element ref="nom" minOccurs="1" maxOccurs="unbounded" />
<xsd:element ref="telephone" minOccurs="0" maxOccurs="unbounded" />
</xsd:sequence>
<xsd:attribute name="cote" type="xsd:string" />
</xsd:complexType>
</xsd:element>
<xsd:element name="nom" type="xsd:string" />
<xsd:element name="telephone" type="typeTelephone"/>
<xsd:simpleType name="typeTelephone">
<xsd:restriction base="xsd:string">
<xsd:pattern value="\d{3} \d{4} \d{4}" />
</xsd:restriction>
</xsd:simpleType>
Xmllint 给我这些错误:
locataires.xml:10: 元素电话: 架构有效性错误: 元素 'telephone': [facet 'pattern'] 值 'à020 7465 4321>' 不被模式接受' à\d{3} \d{4} \d{4}'。
locataires.xml:10: 元素电话: 模式有效性错误: 元素 'telephone': 'à020 7465 4321>' 不是原子类型 'typeTelephone' 的有效值。
locataires.xml:16: 元素电话: 架构有效性错误: 元素 'telephone': [facet 'pattern'] 值 'à020 7465 4321>' 不被模式 'à\d{3 接受} \d{4} \d{4}'。
locataires.xml:16: 元素电话: 架构有效性错误: 元素 'telephone': 'à020 7465 4321>' 不是原子类型的有效值 'typeTelephone'.
我不明白为什么,如果你看到了,请帮助我,
此致,
Zed13
telephone
的正则表达式不允许数据中的尾随 >
个字符。
要成功验证您的XML,请将以下行从
更改为
<telephone>020 7465 4321></telephone>
到
<telephone>020 7465 4321</telephone>
这一个来自
<telephone>020 7465 4321></telephone>
到
<telephone>020 7465 4321</telephone>
或者,将 XSD 正则表达式从
更改为
<xsd:pattern value="\d{3} \d{4} \d{4}" />
到
<xsd:pattern value="\d{3} \d{4} \d{4}>" />
我尝试为此 xml 文件创建一个 xsd 计划:
<?xml version="1.0"?>
<Listelocataires xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="locataires.xsd">
<NoImmeuble>221B</NoImmeuble>
<etage n="1">
<appartement cote="gauche">
<nom>Watson</nom>
</appartement>
<appartement cote="droit">
<nom>Holmes</nom>
<telephone>020 7465 4321></telephone>
</appartement>
</etage>
<etage n="0">
<appartement cote="droit">
<nom>Hudson</nom>
<telephone>020 7465 4321></telephone>
</appartement>
</etage>
</Listelocataires>
我尝试创建一个自定义类型来验证电话号码,但它不接受我的回答,这是我的 xsd 架构:
<?xml version="1.0"?>
<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema">
<xsd:element name="Listelocataires">
<xsd:complexType>
<xsd:sequence>
<xsd:element ref="NoImmeuble" minOccurs="1" maxOccurs="unbounded" />
<xsd:element ref="etage" minOccurs="1" maxOccurs="unbounded" />
</xsd:sequence>
</xsd:complexType>
</xsd:element>
<xsd:element name="NoImmeuble" type="xsd:string" />
<xsd:element name="etage">
<xsd:complexType>
<xsd:sequence>
<xsd:element ref="appartement" minOccurs="1" maxOccurs="unbounded" />
</xsd:sequence>
<xsd:attribute name="n" type="xsd:string" use="required" />
</xsd:complexType>
</xsd:element>
<xsd:element name="appartement">
<xsd:complexType>
<xsd:sequence>
<xsd:element ref="nom" minOccurs="1" maxOccurs="unbounded" />
<xsd:element ref="telephone" minOccurs="0" maxOccurs="unbounded" />
</xsd:sequence>
<xsd:attribute name="cote" type="xsd:string" />
</xsd:complexType>
</xsd:element>
<xsd:element name="nom" type="xsd:string" />
<xsd:element name="telephone" type="typeTelephone"/>
<xsd:simpleType name="typeTelephone">
<xsd:restriction base="xsd:string">
<xsd:pattern value="\d{3} \d{4} \d{4}" />
</xsd:restriction>
</xsd:simpleType>
Xmllint 给我这些错误:
locataires.xml:10: 元素电话: 架构有效性错误: 元素 'telephone': [facet 'pattern'] 值 'à020 7465 4321>' 不被模式接受' à\d{3} \d{4} \d{4}'。 locataires.xml:10: 元素电话: 模式有效性错误: 元素 'telephone': 'à020 7465 4321>' 不是原子类型 'typeTelephone' 的有效值。 locataires.xml:16: 元素电话: 架构有效性错误: 元素 'telephone': [facet 'pattern'] 值 'à020 7465 4321>' 不被模式 'à\d{3 接受} \d{4} \d{4}'。 locataires.xml:16: 元素电话: 架构有效性错误: 元素 'telephone': 'à020 7465 4321>' 不是原子类型的有效值 'typeTelephone'.
我不明白为什么,如果你看到了,请帮助我, 此致, Zed13
telephone
的正则表达式不允许数据中的尾随 >
个字符。
要成功验证您的XML,请将以下行从
更改为<telephone>020 7465 4321></telephone>
到
<telephone>020 7465 4321</telephone>
这一个来自
<telephone>020 7465 4321></telephone>
到
<telephone>020 7465 4321</telephone>
或者,将 XSD 正则表达式从
更改为 <xsd:pattern value="\d{3} \d{4} \d{4}" />
到
<xsd:pattern value="\d{3} \d{4} \d{4}>" />