CDATA忽略&在XSD中

时间:2011-05-27 19:10:43

标签: xsd cdata

我需要xml解析器/验证器来忽略&

的存在

如何在xsd中使用CDATA来完成它。

这是xsd:

的片段
 <xs:simpleType name="values">
  <xs:restriction base="xs:string">
     <xs:enumeration value="IN & OUT"/>
     <xs:enumeration value="XYZ"/>
  </xs:restriction>
</xs:simpleType>

我尝试使用CDATA如下,但是因为我得到xsd验证错误是徒劳的:

 <xs:simpleType name="values">
  <xs:restriction base="xs:string">
     <xs:enumeration value="IN <![CDATA[&]]> OUT"/>
     <xs:enumeration value="XYZ"/>
  </xs:restriction>
</xs:simpleType>

感谢任何帮助。

Thansk提前。

3 个答案:

答案 0 :(得分:1)

我相信您可以使用实体引用&amp;而不是字符&

答案 1 :(得分:1)

尝试使用实体引用:

  <xs:simpleType name="values">
    <xs:restriction base="xs:string">
      <xs:enumeration value="IN &amp; OUT"/>
      <xs:enumeration value="XYZ"/>
    </xs:restriction>
  </xs:simpleType>

或小数引用:

  <xs:simpleType name="values">
    <xs:restriction base="xs:string">
      <xs:enumeration value="IN &#38; OUT"/>
      <xs:enumeration value="XYZ"/>
    </xs:restriction>
  </xs:simpleType>

答案 2 :(得分:0)

嗯。我觉得有趣的是第二个片段中的那一行实际上是黑色而不是正确着色的元素。

请问验证错误是什么?它可能有助于查明该行代码的确切错误。解析器可能会忽略&amp;签收,但你有没有尝试更换&amp;与'&amp;' ?问题是,我有一种感觉,你将枚举值设置为

    "IN <![CDATA[&]]> OUT"/>

哪个......显然不会通过验证。要么是这个,要么解析器完全通过该行,并且仅将XYZ作为枚举值。

  1. 错误是什么。
  2. 您是否尝试过更换&amp;与

    &amp; 
    

    因为它是一个逃避实体?

  3. 干杯。