1

xsd の要素にパターンを適用しようとしています。

要素のタイプは XHTML です。

このようなパターンを適用したい。

<a attributes="some set of attributes"><img attributes="some set of attribtes"/></a>

ルール:

    <a> tag with attributes followed by <img> with attributes. 

有効なデータの例:

  <a xlink:href="some link" title="Image" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns="http://www.w3.org/1999/xhtml">
    <img  alt="No Image" title="No Image" xlink:href="soem path for image" xlink:title="Image" xmlns="http://www.w3.org/1999/xhtml" xmlns:xlink="http://www.w3.org/1999/xlink" />
  </a>

無効:

    <a>data<img/></a>--Data Present, no attributes
    <a><img>abcd</img></a>--data Present, No attributes
    <a><img/></a>---No attributes

このためのパターンの書き方を提案できますか。

        <xsd:restriction base="xs:string">
            <xs:pattern value="Need help"/>             
        </xsd:restriction>  

ありがとうございました。

4

1 に答える 1

1

XSDpatternファセットは、正規表現を使用して単純な型(つまり、型のインスタンスを示すリテラル文字列のセット)の「字句空間」を制約するために使用されます。特定の要素に属性が必要であることを要求することは役に立ちません。

title特定の属性(たとえば、要素上、xlink:hrefおよび要素上)を存在させたい場合、スキーマでそれを行う最も簡単な方法は、必要に応じてそれらの属性を宣言することです。たとえば、XHTML 1.0 strictのスキーマ(http://www.w3.org/TR/xhtml1-schema/#xhtml1-strict )は、次の場合に必要であると宣言しています。atitlealtimgsrcaltimg

<xs:element name="img">
  <xs:complexType>
    <xs:attributeGroup ref="attrs"/>
    <xs:attribute name="src" use="required" type="URI"/>
    <xs:attribute name="alt" use="required" type="Text"/>
    ...
  </xs:complexType>
</xs:element>

一部の属性の使用を要求するだけで、どれを使用するかは気にしない場合、XSDではタスクが簡単になりません。XSD1.0では、「どの属性が表示されるかは気にしない」と言う便利な方法はありません。 、しかし1つある必要があります」。XSD 1.1でアサーションを使用するか、XSDスキーマに加えてSchematronスキーマを使用することで、このような制約を適用できます(私のような一部のオブザーバーが少し奇妙だと思った場合でも)。

于 2012-08-17T01:00:54.830 に答える