0

以下の特定のxmlデータを取得しました

<l7:ApiPlans xmlns:l7="http://ns.xcompany.com/2012/04/api-management">
  <l7:ApiPlan>
<l7:PlanPolicy>

&lt;wsp:Policy xmlns:L7p="http://www.xcompany.com/ws/policy" xmlns:wsp="http://schemas.xmlsoap.org/ws/2002/12/policy"&gt;
&lt;wsp:All wsp:Usage="Required"&gt;
    &lt;wsp:All wsp:Usage="Required"&gt;
          ...... some other welformed xml
&lt;/wsp:All&gt;
    &lt;/wsp:All&gt;
&lt;/wsp:Policy&gt;
    </l7:PlanPolicy>
  </l7:ApiPlan>
</l7:ApiPlans>

PlanPolicy が

&lt;wsp:Policy xmlns:L7p="http://www.xcompany.com/ws/policy"     
xmlns:wsp="http://schemas.xmlsoap.org/ws/2002/12/policy"&gt;
&lt;wsp:All wsp:Usage="Required"&gt;
    &lt;wsp:All wsp:Usage="Required"&gt;

で終わります

 &lt;/wsp:All&gt;
        &lt;/wsp:All&gt;
    &lt;/wsp:Policy&gt;

これまでのところ、私はこれを持っています、

<?xml version="1.0" encoding="UTF-8"?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" elementFormDefault="qualified" targetNamespace="http://ns.xcompany.com/2012/04/api-management" xmlns:l7="http://ns.xcompany.com/2012/04/api-management">
<xs:element name="ApiPlans">
    <xs:complexType>
        <xs:sequence>
            <xs:element maxOccurs="unbounded" ref="l7:ApiPlan"/>
        </xs:sequence>
    </xs:complexType>
</xs:element>
<xs:element name="ApiPlan">
    <xs:complexType>
        <xs:sequence>               
            <xs:element ref="l7:PlanPolicy"/>
        </xs:sequence>
    </xs:complexType>
</xs:element>
<xs:element name="PlanPolicy" type="policyDataType"/>
<simpleType name="policyDataType">
    <restriction base="xs:string">
         <minLength value="1"></minLength>
        <pattern value="(&lt;).*(&gt;).*(&lt;).*(&gt;)"></pattern>
    </restriction>
</simpleType>
</xs:schema>

それは可能ですか?副次的な質問として、パターンでどのように定義しますか: 改行 (CR/LF)、タブ、および引用符。

前もって感謝します

4

2 に答える 2

2

私はこのようにしようとはしません。

選択肢の半分が与えられたとしても、XML 内でエスケープされた XML を使用することはありません。XML は、エスケープせずにネストされるように設計されており、エスケープすると、すべての人の生活がより困難になります。

しかし、このように生活しなければならない場合は、内部の XML を抽出して解析した後、個別に検証します。1 つの検証パスですべてを行う必要はありません。

于 2012-05-28T21:52:31.703 に答える
-1

はい、間違いなく可能です。正規表現は、この非典型的なタスクの唯一のオプションです。エスケープされたコンテンツは XML としてではなく、文字列として処理されることに注意してください。

正規表現で括弧を含むさまざまな特殊文字を適切にエスケープする方法を必ずお読みください。

\n改行とタブは、それぞれと\tm で表されます。

引用符は 2 倍にして入力できます。

于 2012-05-28T19:30:20.453 に答える