1

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,我还有其他选择吗?

4

2 回答 2

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>
于 2012-07-11T13:54:36.750 回答
0

这是一个非常糟糕的 XML 设计。通常,XML 处理工具假定应用程序静态地知道所有元素和属性名称,如果不是这样,编写应用程序将很困难。如果有机会,请更改设计。

于 2012-07-11T16:33:41.383 回答