0

以下の配列のようにデータを検証したい:

input_array = array(
  "boy"=> array("boy_id"=>1),
   "first_name=>"First Name",
   "last_name"=>"Last Name"
);

input_array 内の最初のインデックスは、次のように girl 配列に置き換えることができます

 "girl"=>array("girl_id"=>2)

以下のように情報を検証するために xsd を作成します。

 <xs:element name="xml">
    <xs:complexType>
      <xs:all>
        <xs:element ref="boy" minOccurs="0"/>
        <xs:element ref="girl" minOccurs="0"/>
        <xs:element ref="first_name"/>
        <xs:element ref="last_name"/>
      </xs:all>
    </xs:complexType>
  </xs:element>

first_name問題 - 男の子または女の子の情報がそこにあり、常にそこにあることを確認したいのですlast_nameが、どうすればそれら (女の子、男の子) を選択またはオプションとして配置できますか? xs:all要素の順序が問題にならないように使用したいと思います。

このリンクを参照して、内部で選択を使用しようとしましたが、機能しxs:allませんでした。返信をいただければ幸いです。ありがとうございました。

4

3 に答える 3

4

あなたが参照した記事 ( http://www.w3.org/wiki/Needs_choice_inside_all ) では、置換グループの例が提供されています。では、なぜ使用しないのですか?

表示方法は次のとおりです。

<xs:element name="xml">
  <xs:complexType>
    <xs:all>
      <xs:element ref="gender" minOccurs="1"/>
      <xs:element ref="first_name"/>
      <xs:element ref="last_name"/>
    </xs:all>
  </xs:complexType>
</xs:element>

<xs:element name="gender" abstract="true"/>
<xs:element name="boy" substitutionGroup="gender"> ... </xs:element>
<xs:element name="girl" substitutionGroup="gender"> ... </xs:element>

具体的には、次の完全なスキーマを試しました。

<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema">
  <xs:element name="xml">
    <xs:complexType>
      <xs:all>
        <xs:element ref="gender" minOccurs="1"/>
        <xs:element ref="first_name"/>
        <xs:element ref="last_name"/>
      </xs:all>
    </xs:complexType>
  </xs:element>

  <xs:element name="gender" abstract="true"/>
  <xs:element name="boy" substitutionGroup="gender"/>
  <xs:element name="girl" substitutionGroup="gender"/>

  <xs:element name="first_name" type="xs:string"/>
  <xs:element name="last_name" type="xs:string"/>
</xs:schema>

この XML を検証するには:

<?xml version="1.0" encoding="UTF-8"?>
<xml>
  <girl/>
  <first_name>Lara</first_name>
  <last_name>Croft</last_name>
</xml>

出来た!その際、 I の代わりに<girl/>を指定する<boy/>と、それも通過しましたが、どちらも一緒になかったり、どちらも<girl/>なかっ<boy/>たりすると、通過しませんでした。

于 2013-08-27T20:18:14.847 に答える
1

このコードを試していただけますか?

<xsd:complexType name="column"> 
  <xsd:all>
    <xsd:element ref="gender" minOccurs="1"/>
    <xs:element name="firstname" type="xs:string"/>
    <xs:element name="lastname" type="xs:string"/>
  </xsd:all>
</xsd:complexType>


<xsd:element name="gender">
  <xsd:complexType>
   <xsd:choice>
     <xs:element name="boy" type="xs:integer" default="1"/>
     <xs:element name="girl" type="xs:integer" default="0"/>
   </xsd:choice>
  </xsd:complexType>
 </xsd:element>
于 2013-08-27T15:42:25.897 に答える