anyURI 类型的 XML 元素包含空格是否有效?
架构说是,但表示非常不鼓励。
http://www.w3.org/TR/2001/REC-xmlschema-2-20010502/#anyURI
NOTE: Spaces are, in principle, allowed in the ·lexical space· of anyURI, however, their use is highly discouraged (unless they are encoded by %20).
第三方正在为此受众群体设置非转义空格,例如“网站一”。但这看起来很奇怪,请有人确认我没有发疯:)
更新
我应该提到我指的是 SAML2 断言模式中的受众元素,它只是将其声明为 anyUri,但如果它同样可以是一个字符串(“一二三”)为什么它甚至被设置为 anyUri。
最佳答案
第一点:xs:anyURI数据类型的whiteSpace facet被定义为“collapse”,意思是忽略前导和尾随的空白字符,内部的空白序列相当于一个空格字符。
第二点:如@forty-two所述,如果您可以通过应用百分比编码获得合法的URI,那么它就是xs:anyURI
的合法(XSD 1.0)实例:具体来说, "website one"
是相对 URI "website%20one"
的合法表示。
(我喜欢使用术语“wannabe URI”来描述不是 URI,但在应用转义后变成 URI 的字符串。XSD 1.0 允许 wannabe URI。这里的主要困难之一是您不不知道 URI 是否已经转义;如果你应用转义两次,你会得到 "website%2520one"
,这会让你陷入困惑。)
最后,在 XSD 1.1 中,所有的赌注都被取消了:“anyURI 的值空间是一组有限长度的零个或多个字符序列(如 [XML] 中所定义),它们与来自 [XML] 的 Char 生产相匹配]."。从本质上讲,考虑到 URI/IRI/LEIRI 规范的多样性,关于究竟什么是合法的,什么不是合法的争论太多了,以至于模式组决定,就有效性而言,任何事情都可以。
关于xml - 'anyURI'的xsd类型可以包含空格吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33826104/