XML 架构:具有此名称模式的元素具有此属性
XML Schema: elements with this name pattern have this attribute
我有这个 XML 样本。
<root>
<Ilhas_da_Madeira_e_Porto_Santo update-date="2016-04-01" update-time="14:14:46">
<Santana update-author="sourceData" update-date="2016-04-01" update-time="14:14:48">
<year1995 ncrimes="33"/>
<year1994 ncrimes="58"/>
<year1993 ncrimes="33"/>
</Santana>
</Ilhas_da_Madeira_e_Porto_Santo>
<NE update-date="2016-04-01" update-time="14:14:48">
<NE update-author="sourceData" update-date="2016-04-01" update-time="14:14:48">
<year1995 ncrimes="163"/>
<year1994 ncrimes="125"/>
<year1993 ncrimes="126"/>
</NE>
</NE>
</root>
(XML 架构 - xsd)
我已经用 xs:group
和 xs:attributeGroup
.
对元素和属性进行分组
问题:
是否可以这样做:elements with name_pattern="year(\d){4}" have attribute=ncrimes
?
XML 架构的设计不鼓励这样的 XML 词汇表设计。通常认为元素或属性名称具有这样的内部结构是不好的形式。而不是
<year1995 ncrimes="163"/>
你应该使用像
这样的东西
<year y="1995" ncrimes="163"/>
通过这种设计,您会发现 XML 堆栈中的所有内容(不仅是 XML 架构,还包括 XSLT、XPath 和 DOM 之类的东西)都可以正常工作更顺畅
但是,如果您不能或不愿更改词汇表设计,那么您的下一个最佳选择是使用 abstract="true"
定义 name="year"
的元素声明,然后定义元素 [= 14=, year1994
等作为 year
.
的替换组中的元素
我有这个 XML 样本。
<root>
<Ilhas_da_Madeira_e_Porto_Santo update-date="2016-04-01" update-time="14:14:46">
<Santana update-author="sourceData" update-date="2016-04-01" update-time="14:14:48">
<year1995 ncrimes="33"/>
<year1994 ncrimes="58"/>
<year1993 ncrimes="33"/>
</Santana>
</Ilhas_da_Madeira_e_Porto_Santo>
<NE update-date="2016-04-01" update-time="14:14:48">
<NE update-author="sourceData" update-date="2016-04-01" update-time="14:14:48">
<year1995 ncrimes="163"/>
<year1994 ncrimes="125"/>
<year1993 ncrimes="126"/>
</NE>
</NE>
</root>
(XML 架构 - xsd)
我已经用 xs:group
和 xs:attributeGroup
.
问题:
是否可以这样做:elements with name_pattern="year(\d){4}" have attribute=ncrimes
?
XML 架构的设计不鼓励这样的 XML 词汇表设计。通常认为元素或属性名称具有这样的内部结构是不好的形式。而不是
<year1995 ncrimes="163"/>
你应该使用像
这样的东西<year y="1995" ncrimes="163"/>
通过这种设计,您会发现 XML 堆栈中的所有内容(不仅是 XML 架构,还包括 XSLT、XPath 和 DOM 之类的东西)都可以正常工作更顺畅
但是,如果您不能或不愿更改词汇表设计,那么您的下一个最佳选择是使用 abstract="true"
定义 name="year"
的元素声明,然后定义元素 [= 14=, year1994
等作为 year
.