gpt4 book ai didi

xml - xsd-schema 中的自定义属性

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

我正在尝试为一些基本但特定的需求制作一个简单的 xml 编辑器,我不确定如何处理的事情是我希望能够在xsd-schema 本身。

我的想法是这样的:

<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema">
<xsd:element name="Book">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="Author" type="xsd:string" listable="1" />
<xsd:element name="Pages" type="xsd:int" />
</xsd:sequence>
</xsd:complexType>
</xsd:element>
</xsd:schema>

我想要有关元素在架构中是否“可列出”的信息(请注意,.xml 文件没有关于元素是否可列出的信息或线索,可列出属性只是一种方式在编辑器中组织元素)。

它不需要是它自己的属性。如果有一个 misc 属性或者我可以玩的东西就可以了。问题只是上面的模式没有验证(在这种情况下不支持 'listable' 属性。)

有没有办法在模式中存储这种信息?

似乎可以创建一个新的命名空间,但我不知道应该如何声明该命名空间,以便任何元素都可以在 xsd 中具有特殊属性(我宁愿避免弄乱 xml 文件这个)。仅仅为此创建一个新的命名空间似乎有点矫枉过正?

还是我完全以错误的方式解决了这个问题?

最佳答案

此信息应位于其自己的命名空间中。存储它的最佳位置是在属性的注释中。您可以将注释附加到任何模式项,它们可以包含 xsd:documentation 元素(专为人类可读文档设计)和 xsd:appinfo(专为机器可处理信息设计)。所以你的例子看起来像:

 <xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:foo="http://www.example.org/bar">
<xsd:element name="Book">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="Author" type="xsd:string" >
<xsd:annotation>
<xsd:appinfo>
<foo:listable value="true"/>
</xsd:appinfo>
</xsd:annotation>
</xsd:element>
<xsd:element name="Pages" type="xsd:int" />
</xsd:sequence>
</xsd:complexType>
</xsd:element>
</xsd:schema>

关于xml - xsd-schema 中的自定义属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3084155/

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