2011-12-14 12 views
1

xmlにdoctypeを適用するにはどうすればよいですか?XML Doctype、適用方法

<?xml version="1.0" encoding="ISO-8859-1"?> 
<!DOCTYPE application [ 
     <!ELEMENT application (#PCDATA)> 
]> 
<application> 
     <settings> 
       <environment use="production" /> 
       <database datasource="MySQL" environment="production" /> 
       <database datasource="MySQL" environment="development" /> 
       <import> 
        <path value="Application" /> 
        <path value="Application/Library" /> 
       </import> 
     </settings> 
     <environment name="production"> 
       <database> 
        <hostname value="127.0.0.1" /> 
        <username value="root" /> 
        <password value="" /> 
        <database value="app" /> 
       </database> 
     </environment> 
     <environment name="development"> 
       <database> 
        <hostname value="127.0.0.1" /> 
        <username value="root" /> 
        <password value="" /> 
        <database value="app" /> 
       </database> 
     </environment> 
</application> 

私はまた、あなたがこのノードを持っている必要があり、例えば、環境設定をXMLに含まれていると属性するために必要な要素を検証したかった、ともどのように私は実装することができ、単一のDOCTYPEを作成することができますさまざまなXMLによって、xsdファイルを使用してXMLをどのように検証できますか?

+0

DTOCではDOCTYPE宣言が使用されます。しかし、xsdファイル(通常はW3C XML Schemaを意味します)を使用した検証についても言及しています。どうか明らかにしてください。 – mzjn

+0

はい、w3c schema ..すべてのxmlにどのようにdtdを適用するのか知りたいだけです –

+0

XMLスキーマとDTDの両方を使用していますか?これらは2つの異なるスキーマ言語です。 – mzjn

答えて

1

次のスキーマ(あなたがタイプ定義を移入する必要があります)試してみてください:あなたが検証したいXMLインスタンス

<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" 
    targetNamespace="http://example.com/sample" 
    xmlns="http://example.com/sample"> 
    <xs:element name="application"> 
    <xs:complexType> 
     <xs:sequence> 
     <xs:element name="settings" type="settingsType" /> 
     <xs:element name="environment" maxOccurs="unbounded" type="environmentType" /> 
     </xs:sequence> 
    </xs:complexType> 
    </xs:element> 

    <!-- type definitions --> 
    <xs:complexType name="settingsType"> 
    ... define type here... 
    </xs:complexType> 
    <xs:complexType name="environmentType"> 
    ... define type here... 
    </xs:complexType> 
</xs:schema> 

は、あなたのルートノードでのxmlns属性を含めることによって、スキーマに関連付けることができます。

<application xmlns="http://example.com/sample"> 
     <settings> 
       .... 
     </settings> 
     <environment name="production"> 
       .... 
     </environment> 
     <environment name="development"> 
       .... 
     </environment> 
</application> 
+0

私はもう1つの質問があります。設定では、使用される環境の定義を含むノードがあります。もしそうなら、この環境がXMLに存在することをどのように検証できますか? –

+0

上記の私の答えのスキーマに基づいて、準拠しているXML文書は少なくとも1つの*環境*ノードを持っていなければなりません。そうしないと、スキーマに対して検証されません。これはあなたの質問に答えますか? –

+0

Nopz、このスレッドhttp://stackoverflow.com/questions/8511736/xsd-restricted-ruleをチェックして、何をしようとしているのか理解しています。 –

関連する問題