xml - XML 数据对于模式“[A-FH-Z][AZ]|[AZ][A-QS-Z]”不是 Facet-valid
问题描述
使用“34”作为我的值时出现以下错误:
Cvc-pattern-valid:值 '34' 对于模式 '[A-FH-Z][AZ]|[AZ][A-QS-Z]' 对于类型 'TKodKrajuJPK' 而言不是 Facet-valid。,行“86”,“56”列。
以下是 XSD 中的类型模式:
<xsd:simpleType name="TKodKraju">
<xsd:union memberTypes="etd:TKodKraju tns:TKodKrajuISO"/>
</xsd:simpleType>
<xsd:simpleType name="TKodKrajuISO">
<xsd:annotation>
<xsd:documentation>Uzupełnienie słownika kodów krajów o brakujące kody wg ISO 3166 oraz unijny kod dla Grecji - EL</xsd:documentation>
</xsd:annotation>
<xsd:restriction base="xsd:normalizedString">
<xsd:enumeration value="SX">
<xsd:annotation>
<xsd:documentation>WYSPA SINT MAARTEN (CZĘŚĆ HOLENDERSKA WYSPY)</xsd:documentation>
</xsd:annotation>
</xsd:enumeration>
<xsd:enumeration value="BQ">
<xsd:annotation>
<xsd:documentation>BONAIRE, SINT EUSTATIUS I SABA</xsd:documentation>
</xsd:annotation>
</xsd:enumeration>
<xsd:enumeration value="SS">
<xsd:annotation>
<xsd:documentation>SUDAN POŁUDNIOWY</xsd:documentation>
</xsd:annotation>
</xsd:enumeration>
<xsd:enumeration value="CW">
<xsd:annotation>
<xsd:documentation>CURAÇAO</xsd:documentation>
</xsd:annotation>
</xsd:enumeration>
<xsd:enumeration value="EL">
<xsd:annotation>
<xsd:documentation>GRECJA</xsd:documentation>
</xsd:annotation>
</xsd:enumeration>
</xsd:restriction>
</xsd:simpleType>
<xsd:simpleType name="TKodKrajuJPK">
<xsd:annotation>
<xsd:documentation>Wyklucznie ze słownika kodów krajów kodu dla Grecji - GR</xsd:documentation>
</xsd:annotation>
<xsd:restriction base="tns:TKodKraju">
<xsd:pattern value="[A-FH-Z][A-Z]"/>
<xsd:pattern value="[A-Z][A-QS-Z]"/>
</xsd:restriction>
</xsd:simpleType>
据我了解,应该是 . 范围内的大写字母A-Z
。但是,当我使用“AA”时,它仍然会出错:
Cvc-datatype-valid.1.2.3:“AA”不是联合类型“TKodKrajuJPK”的有效值。,“86”行,“56”列。
但是当我使用BB
的时候错误就解决了。
有人可以澄清什么是有效值以及我应该输入哪种模式?
解决方案
这些是正则表达式。它们定义了有效大写字母的范围。
您的 XML 似乎包含一个数值 34。这显然是无效的。此外,您需要检查<xsd:restriction base="tns:TKodKraju">
子句背后的内容。如果没有该子句,AA
则通过验证。
原帖中最新曝光的 XSD 片段意味着该值需要通过对枚举器“SX”、“BQ”、“SS”等的第一次验证,然后是正则表达式模式。
XML
<?xml version="1.0"?>
<root xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="kod.xsd">
<kod>AA</kod>
</root>
XSD
<?xml version="1.0" encoding="UTF-8"?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" elementFormDefault="qualified">
<xs:element name="root">
<xs:complexType>
<xs:sequence>
<xs:element ref="kod"/>
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element name="kod">
<xs:simpleType>
<xs:restriction base="xs:string">
<xs:pattern value="[A-FH-Z][A-Z]"/>
<xs:pattern value="[A-Z][A-QS-Z]"/>
</xs:restriction>
</xs:simpleType>
</xs:element>
</xs:schema>
输出
Running custom validation engine Saxonica 9.8.0.12 Validator...
SAXON-EE 9.8.0.12J from Saxonica validate complete
推荐阅读
- laravel - 如何在“post sayı”列中显示用户的帖子数?
- sed - sed 命令替换文件中的第一个匹配项
- amazon-web-services - 试图将所有流量从 EC2 重定向到容器
- c++ - 在一个程序中使用具有内部和外部链接的变量名
- json - Swift UI 获取 JSON
- java - 在 android studio 中从 Uri 获取路径文件
- java - bean初始化-我收到AssertionError:尚未实现
- lisp - 格式化长字符串的奇怪行为
- python - 根据python中列的标签创建groupby
- vue.js - Vue Router如何加载第二个组件加载