我有一个无法更改的已定义XML结构。语义定义和值的真实内容包含在同一XML元素中,但具有属性:
<FIELD Name="ID" value="non-empty">
</FIELD>
<FIELD Name="DATE" value "">
</FIELD>
我希望能够在XSD中描述这些属性值“ID”和“DATE”在我的XML中。
有可能吗?
答案 0 :(得分:2)
你的意思是,你想要将第一个FIELD限制为Name =&#34; ID&#34;,第二个要限制Name =&#34; DATE&#34;,依此类推?
你不能直接用XSD 1.0做到这一点(如果两个同名的元素都是兄弟姐妹,它们必须具有相同的类型,这意味着你不能应用不同的规则对他们的限制)。
两种可能的解决方案是(a)使用不同的验证技术,例如带有断言或Schematron的XSD 1.1,或(b)创建验证管道,其中步骤1将结构转换为类似
的结构<ID>non-empty</ID>
<DATE/>
和步骤2根据模式验证此转换后的结构。
第二种方法的另一个好处是,转换后的XML比原始XML更容易使用。