gpt4 book ai didi

XmlSchema 空白崩溃 : What happens to multiple whitespaces?

转载 作者:数据小太阳 更新时间:2023-10-29 01:51:16 29 4
gpt4 key购买 nike

我使用以下 XmlSchema:

<?xml version="1.0" encoding="UTF-8"?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"
targetNamespace="http://www.test.com/XmlValidation"
elementFormDefault="qualified"
attributeFormDefault="unqualified"
xmlns:m="http://www.test.com/XmlValidation">

<xs:element name="test">
<xs:complexType>
<xs:sequence>
<xs:element name="testElement" type="m:requiredStringType"/>
</xs:sequence>
</xs:complexType>
</xs:element>

<xs:simpleType name="requiredStringType">
<xs:restriction base="xs:string">
<xs:minLength value="1"/>
<xs:whiteSpace value="collapse"/>
</xs:restriction>
</xs:simpleType>
</xs:schema>

它定义了一个必须至少有一个字符长的 requiredStringType 并且还定义了空格折叠。

当我验证以下 Xml 文档时,验证成功:

<?xml version="1.0" encoding="UTF-8"?>
<test xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://www.text.com/XmlValidation">
<testElement> </testElement>
</test>

w3.org 定义了空白折叠:

“在替换隐含的处理之后,#x20 的连续序列被折叠成单个#x20,并且前导和尾随的#x20 被删除。”

这是否意味着 3 个空格折叠为 1 个或 0 个空格?在 XmlSpy 中验证失败,在 .Net 中验证成功。

最佳答案

因为它说前导和尾随空格被删除,这意味着只包含空格的字符串将被折叠成一个空字符串。 XmlSpy 在验证方面是准确的,而 .NET 是慷慨的(或正在出错)。

这是根据 White Space Normalization during Validation来自 XML Schema Part 1: Structures Second Edition .

preserve
No normalization is done, the value is the ·normalized value·
replace
All occurrences of #x9 (tab), #xA (line feed) and #xD (carriage return) are replaced > with #x20 (space).
collapse
Subsequent to the replacements specified above under replace, contiguous sequences of #x20s are collapsed to a single #x20, and initial and/or final #x20s are deleted.

因此,首先所有的空格都被空白字符替换,第二个连续的序列被单个空白字符替换,第三个和最后一个,初始和最后一个空格被删除。按照此序列,仅包含空格的字符串必须在验证期间规范化为空字符串。

关于XmlSchema 空白崩溃 : What happens to multiple whitespaces?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/666192/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com