2012-01-14 11 views
0

次の2つの例のいずれかを検証できるxsdを作成するにはどうすればよいですか?属性とオプションの値を持つ要素を定義する

<element attribute="attribute-value" /> 

<element attribute="attribute-value">element-value</element> 
+0

こんにちはルイス、同様の質問への回答を見つける別の方法は、XMLスニペットを取り入れ、XMLスキーマファイルを推論するツールを使用することです。 XMLとXSDを合理的に処理するすべてのツールでは、XMLからXSDを推論する能力が必要です。また、XMLやXSDを扱う場合は、特殊なツールを使用する方が良いと思っています...もっと魚の釣り方を教えようとしています... –

+0

ハイ・ルイス、受け入れられた答え? – Skyrim

答えて

1
<?xml version="1.0" encoding="utf-8"?> 
    <xs:schema id="test" 
     targetNamespace="http://tempuri.org/test.xsd" 
     elementFormDefault="qualified" 
     xmlns="http://tempuri.org/test.xsd" 
     xmlns:mstns="http://tempuri.org/test.xsd" 
     xmlns:xs="http://www.w3.org/2001/XMLSchema" 
    > 
    <xs:complexType name="element_type"> 
     <xs:simpleContent> 
     <xs:extension base="xs:string"> 
      <xs:attribute name="attribute" type="xs:string" /> 
     </xs:extension> 
     </xs:simpleContent> 
    </xs:complexType> 

    <xs:element name="root"> 
     <xs:complexType> 
     <xs:sequence> 
      <xs:element name="element" type="element_type"> 
      </xs:element> 
     </xs:sequence> 
     </xs:complexType> 
    </xs:element> 
    </xs:schema> 

これは、属性が必須ではないことを前提としています。完全のために

+0

ルートエレメントが不要な場合は、後半部分を '' – Skyrim

+0

Skyrim

1

あなたはこのためxsd:simpleContentを使用します。 Hereは例です。

0

次のように、私はいくつかの検証パラメータを追加しました:

<xsd:element name="element"> 
    <xsd:complexType> 
    <xsd:simpleContent> 
     <xsd:extension base="OptionalString"> 
      <xsd:attribute name="row" type="xsd:positiveInteger" 
       use="required" /> 
     </xsd:extension> 
    </xsd:simpleContent> 
    </xsd:complexType> 
</xsd:element> 

<xsd:simpleType name="OptionalString"> 
<xsd:restriction base="xsd:string"> 
    <xsd:minLength value="0" />   
</xsd:restriction> 
</xsd:simpleType> 

が、これは上記の提案された解決策とは異なることでしょうか?

関連する問題