XML允许Q的可变数量的属性后跟一个数字,比如
<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吗?
答案 0 :(得分:1)
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>
答案 1 :(得分:0)
这是一个非常糟糕的XML设计。通常,XML处理工具假定应用程序静态地知道所有元素和属性名称,如果不是这样,编写应用程序将很困难。如果有机会,请更改设计。