我是一个XSD,它定义了一个元素的最大长度为10。字符串"12345678'"
无效,因为它将转义为"12345678'"
且超过10个字符。我希望"12345678'"
也有效,但我一直无法找到解决方法。
XSD:
<xs:element name="ElementName">
<xs:annotation>
<xs:appinfo>
<b:recordInfo notes="XXX" xmlns:b="XXX" />
</xs:appinfo>
</xs:annotation>
<xs:complexType>
<xs:sequence>
<xs:element name="Element1">
<xs:annotation>
<xs:appinfo>
<b:fieldInfo notes="XXX" />
</xs:appinfo>
</xs:annotation>
<xs:simpleType>
<xs:restriction base="xs:string">
<xs:minLength value="1" />
<xs:maxLength value="10" />
</xs:restriction>
</xs:simpleType>
</xs:element>
<xs:element minOccurs="0" name="Element2">
<xs:annotation>
<xs:appinfo>
<b:fieldInfo notes="XXX" xmlns:b="XXX" />
</xs:appinfo>
</xs:annotation>
<xs:simpleType>
<xs:restriction base="xs:string">
<xs:minLength value="1" />
<xs:maxLength value="10" />
</xs:restriction>
</xs:simpleType>
</xs:element>
</xs:sequence>
</xs:complexType>
</xs:element>
答案 0 :(得分:2)
从数据模型的角度来看,'
仅计为单个字符,与'
相同。 XML Schema在抽象级别中更高,因为它consumes the XML infoset,实体引用已经解析as a character code。
一些已解析的实体引用可能still appear in the XML infoset,但这仅适用于外部实体和非验证处理器(在DTD验证意义上),据我所知,XML Schema does not explicitly reference them。
所以我担心这不可能直截了当;但我当然会很高兴被证明是错误的并且学到了一些东西。如果向XML Schema“解释”哪些字符被认为是被转义的话,使用带有模式和联合的约束方面可能会有效,但是可能需要一些努力,这仍然无法区分'
和{{1在语法层面上。