2017-05-15 11 views
1

私はこのXML持っている:XSDを介してXMLでより小さい(<)と大きい(>)を検証しますか?

<?xml version="1.0" encoding="utf-8"?> 
<data> 
    <A>2&gt;1</A> 
    <B>0&lt;1</B> 
</data> 

を、私はこのXSDでそれを検証する:

<xs:schema attributeFormDefault="unqualified" elementFormDefault="qualified" xmlns:xs="http://www.w3.org/2001/XMLSchema"> 
<xs:element name="data"> 
    <xs:complexType> 
    <xs:sequence> 
     <xs:element name="A"> 
     <xs:simpleType> 
      <xs:restriction base="xs:string"> 
      <xs:pattern value="[^&lt;&gt;]+" /> 
      </xs:restriction> 
     </xs:simpleType> 
     </xs:element> 
     <xs:element name="B"> 
     <xs:simpleType> 
      <xs:restriction base="xs:string"> 
      <xs:pattern value="[^&lt;&gt;]+" /> 
      </xs:restriction> 
     </xs:simpleType> 
     </xs:element> 
    </xs:sequence> 
    </xs:complexType> 
</xs:element> 

私が検証するためにxmllintを使用して、私はこのエラーを得た:

Schemas validity error: Element 'A': [facet 'pattern'] The Value '2>1' is not accepted by the pattern '[^<>]'.

Schemas validity error: Element 'B': [facet 'pattern'] The Value '0<1' is not accepted by the pattern '[^<>]'

誰もが見る通り、<またははありません要素内のAおよびB。私は2&gt;10&lt;1です。 xmllintがxmlを検証する前に、2&gt;12>10&lt;10<1に転送してから、それらが正しくないと報告します。

文字列にシンボルよりも大きくてもなくてもいけないことを要求する文字列を"2&gt;1""0&lt;1"に渡すことはできますか?

答えて

0

この更新XSD、

<xs:schema attributeFormDefault="unqualified" 
      elementFormDefault="qualified" 
      xmlns:xs="http://www.w3.org/2001/XMLSchema"> 
    <xs:element name="data"> 
    <xs:complexType> 
     <xs:sequence> 
     <xs:element name="A" type="ltGtExpType"/> 
     <xs:element name="B" type="ltGtExpType"/> 
     </xs:sequence> 
    </xs:complexType> 
    </xs:element> 
    <xs:simpleType name="ltGtExpType"> 
    <xs:restriction base="xs:string"> 
     <xs:pattern value="\d+[&lt;&gt;]\d+" /> 
    </xs:restriction> 
    </xs:simpleType> 
</xs:schema> 

は、

成功し
<?xml version="1.0" encoding="utf-8"?> 
<data> 
    <A>2&gt;1</A> 
    <B>0&lt;1</B> 
</data> 

をあなたのXMLを検証します。言っ


は、あなたが <&lt;(と >&gt;間)XSDレベルで区別しようとしているように見えます。とにかくそれは合理的な要件のためには不可能であり、必要でもありません。 XMLパーサーは、検証の前にそれらの置換を行います。さらに、XMLパーサーは、整形式検査の一部として、開始タグの一部ではない文字の <シンボルについてエラーを発行しています。

関連する問題