我一直在使用 XML 格式,该格式混合了不同的现有格式和一些自定义元素和属性,并且我认为应该为这些自定义位编写一个架构。
我做的一件事是在现有格式的元素上使用自定义属性,如下所示:
<ns1:something attA="b" attB="a" ns2:extraAtt="c"/>
我知道这样做是允许的,但我不知道如何在 XML 模式中或者更糟糕的是在 DTD 中声明我的“extraAtt”。
我尝试过阅读规格 http://www.w3.org/TR/xmlschema11-1/,但就我而言,它也可以用中文写。大多数教程只讨论“名称”、“类型”和“用途”,例如this one http://www.liquid-technologies.com/Tutorials/XmlSchemas/XsdTutorial_01.aspx and that one http://www.w3schools.com/schema/schema_simple_attributes.asp.
每个模式文档定义一个名称空间的组件(模式的各个部分)。所以要定义你的属性ns2:extraAtt
你想要一个像这样的模式文档:
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"
targetNamespace="http://example.com/my-ns2">
<xs:attribute name="extraAtt" type="xs:anySimpleType"/>
</xs:schema>
元素 ns1:something 的声明需要以某种方式允许该属性,或者使用属性引用 (<xs:attribute ref="ns2:extraAtt"/>
) 或使用属性通配符 (<xs:anyAttribute namespace="http://example.com/my-ns2"/>
或类似)。
对规范的易读性感到抱歉;这是一个很长的故事,但本质上工作组的一些成员并不认为像你这样的人存在(“除了实现者之外没有人阅读规范,只要他们不抱怨它就足够可读”——至少,这就是他们在一些实施者大声抱怨之前就说过;然后他们只是改变了话题)。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)