2016-12-22 4 views
1

xsdスキーマで本当に苦労しています。XMLスキーマ:属性値を持つ要素のシーケンス?

<?xml version='1.0' encoding='UTF-8'?> 
<testing version="0.1"> 
    <alarms> 
    <alarm ID="1"> 
     <column name="TYPE">HIGH TEMP</column> 
     <column name="DISPLAY">High temperature alarm</column> 
     <column name="VALUE">245.66</column> 
    </alarm> 
    <alarm ID="2"> 
     <column name="TYPE">HUMIDITY</column> 
     <column name="DISPLAY">Humidity alarm</column> 
     <column name="VALUE">56.44</column> 
    </alarm> 
    </alarms> 

私はこのためにXSDスキーマを生成するために、いくつかのオンラインツールを使用している以下のように私は、しかし、彼らは私が望んでいたものではありません、XMLスニペットを持っています。 ID列は必須で、グローバルを使用したくないのですか?

私も、私は

これは私がこれまでのところ、私は列要素

<?xml version="1.0" encoding="UTF-8"?> 
<xs:schema attributeFormDefault="unqualified" elementFormDefault="qualified" xmlns:xs="http://www.w3.org/2001/XMLSchema"> 
<xs:element name="alarms"> 
    <xs:complexType> 
    <xs:sequence> 
    <xs:element name="alarm" maxOccurs="unbounded" minOccurs="0"> 
    <xs:complexType> 
     <xs:sequence> 
     <xs:element name="column"> 
      <xs:complexType> 
      <xs:simpleContent> 
       <xs:extension base="xs:string"> 
       <xs:attribute name="name" type="xs:string" /> 
       </xs:extension> 
      </xs:simpleContent> 
      </xs:complexType> 
     </xs:element> 
     </xs:sequence> 
    </xs:complexType> 
    </xs:element> 
</xs:sequence> 
</xs:complexType> 
を検証する方法を知らないてきたものであることをどのように行うのか(つまり、小数点として検証)の値に制限を配置したいです

よろしく

+0

これまでに設定したスキーマを投稿してください。 – potame

+0

ありがとう、投稿を編集しました – retarded

+0

こんにちは、xmlの列要素はすべて同じ型でなければなりませんか?もしそうなら、van xmlはスキーマで検証されますか? – retarded

答えて

2

まず、あなたは "単純なコンテンツを持つ複合型" をしたいです。そのフレーズを検索するだけで十分な例が見つかります。ここで私はここで見つける例です:

c# serialization - complex type containing simple content with attributes

<xsd:complexType name="AwkwardChild"> 
    <xsd:simpleContent> 
    <xsd:extension base="tt:AwkwardChildType"> 
     <xsd:attribute name="id" type="xsd:ID"/> 
    </xsd:extension> 
    </xsd:simpleContent> 
</xsd:complexType> 

を第二に、XSD 1.0で、2つの兄弟要素が同じ名前を持っているならば、彼らは同じ型を持っている必要があります。検証は、要素名によって完全に駆動されます。したがって、<column name="DISPLAY"><column name="VALUE">のルールを違うことはできません。これを行うには、XSD 1.1に「条件付き型の代入」という機能が必要です。

+0

ありがとう、私は私の投稿を編集しましたが、まだ列のテキストを検証する方法を知らない – retarded

+0

私は答えに追加しました。 –

関連する問題