微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

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

我正在尝试为一些基本但特定的需求创建一个简单的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>

原文地址:https://www.jb51.cc/xml/293121.html

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。