gpt4 book ai didi

xslt - XML Schema xs :ID type valid for an XML element, 还是仅用于属性?

转载 作者:行者123 更新时间:2023-12-04 19:49:16 26 4
gpt4 key购买 nike

在 W3C Reco ( here ) 中,我发现

[...] ID is a type of attribute and so it cannot be applied to attributes, elements or their content



因为我可以在我必须处理的文件中找到一些,我想知道 xsi:ID 是否真的是一个有效的 xlm 元素类型

我现有的 xsd 提到:
<xsd:complexType name="customTypeName">
<xsd:sequence>
<xsd:element name="ID" type="xsd:ID"/>
<xsd:element name="myElement" type="string"/>
</xsd:sequence>
</xsd:complexType>

但根据我的阅读,我宁愿认为有效的声明应该是
<xsd:complexType name="customTypeName">
<xsd:element name="myElement" type="string"/>
<attribute name="ID" type="xsd:ID" use="required"/>
</xsd:complexType>

但不幸的是,我无法更改已经使用的 xsd ...
我愿意使用 id() 函数应用 xslt 搜索。
我应该放弃还是有办法?

预先感谢对我在论坛上的第一个问题的任何帮助。

最佳答案

(好问题,可惜当时没有得到足够的重视。)

ID is a type of attribute and so it cannot be applied to attributes, elements or their content



这是规范中的一个错误。它应该说“不能应用于元素或其内容”。在 XML 模式 1.1 中 it is quite clear , 尽管:

For compatibility, ID should be used only on attributes.



这意味着,您可以将类型应用于属性,但不能应用于元素,但这样做时通常不会引发错误。

但是,使用 xs:ID并不总能达到人们期望的效果。例如,它期望 NCName ,这意味着它不能以数字开头。此外,不强制执行唯一性约束。

通常使用 xml:id 会好很多.是 well-defined by the spec ,并且得到了 fn:id() 的大力支持你提到的功能。另外,使用 xml:id ,人们不需要学习新名称,也不需要额外的命名空间定义。

即使您的 XSD 验证器接受 xs:ID在元素上,XPath 规范不接受它,并且在使用 fn:id() 时不会返回它。 .然而,这个函数和 element-with-id() function无论如何都返回应用了 ID 的元素,所以这不需要太大的问题。

关于xslt - XML Schema xs :ID type valid for an XML element, 还是仅用于属性?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21625738/

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