如何将XSD属性名称定义为正则表达式?
的XML允许可变数目后跟数字Q的属性,这样如何将XSD属性名称定义为正则表达式?
<recognitionPattern Q0="12.5" Q1="12.5" Q2="12.5" Q3="12.5" Q4="12.5" Q5="12.5" Q6="12.5" Q7="12.5"/>
我目前的解决方案看起来是这样的:
<xs:complexType name="PerQuarterDoubleHack"> <!-- YUCK! /> -->
<xs:attribute name="Q0" type="xs:double" />
<xs:attribute name="Q1" type="xs:double" />
<xs:attribute name="Q2" type="xs:double" />
<xs:attribute name="Q3" type="xs:double" />
<xs:attribute name="Q4" type="xs:double" />
<xs:attribute name="Q5" type="xs:double" />
<xs:attribute name="Q6" type="xs:double" />
<xs:attribute name="Q7" type="xs:double" />
</xs:complexType>
我见过很多的正则表达式的应用的值,但从来没有一个属性名称。 我有更改XML吗?
XML Schema不允许将任何验证应用于属性名称,仅限于其值。如果可能的话,最好的办法是将XML更改为以下内容:
<recognitionPattern>
<quarter id="0">12.55</quarter> <!-- equivalent to Q0 -->
<quarter id="1">12.55</quarter> <!-- equivalent to Q1 -->
<quarter id="2">12.55</quarter> <!-- equivalent to Q2 -->
<quarter id="3">12.55</quarter> <!-- equivalent to Q3 -->
</recognitionPattern>
这是我的后备计划.... – user1185461 2012-07-11 13:58:52
您也可以使用自定义代码验证属性名称。例如,如果您正在使用Java,则可以设置一个自定义验证处理程序,以便为您的XML的每个元素调用。 – 2012-07-11 14:01:43
属性可以验证。看到这个问题:http://*.com/questions/832542/xsd-attribute-and-element-validation – sreehari 2012-07-11 16:44:47
这是一个非常糟糕的XML设计。通常,XML处理工具假定应用程序静态地知道所有的元素和属性名称,如果不是这样,编写应用程序将很困难。如果有机会改变设计。
http://*.com/questions/832542/xsd-attribute-and-element-validation – sreehari 2012-07-11 16:45:31