2011-12-14 2 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 속성, 당신은이 노드를해야하며, 또한 내가 구현 될 수있는 하나의 문서 타입을 만드는 방법 다양한 XML에 의해 어떻게 xsd 파일을 사용하여 XML을 검증 할 수 있습니까?

+0

DTOC에는 DOCTYPE 선언이 사용됩니다. 그러나 일반적으로 W3C XML 스키마를 의미하는 xsd 파일을 사용하여 유효성을 언급합니다. 명확히하십시오. – mzjn

+0

예, w3c 스키마 .. 모든 xml에 대해 dtd를 적용하는 방법을 알고 싶습니다. –

+0

XML 스키마와 DTD를 모두 사용하고 있습니까? 이들은 서로 다른 두 가지 스키마 언어입니다. – mzjn

답변

1

다음 스키마를 봅니다 (당신은 타입 정의를 채울 필요) :

<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이 루트 노드 속성을 포함하여 다음 스키마와 연관 될 수 있습니다 확인하고자하는 XML 인스턴스 :

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

다른 환경 설정에 사용되는 환경 정의가 포함 된 노드가있을 것입니다. 그렇다면이 환경이 XML에 존재하는지 어떻게 확인할 수 있습니까? –

+0

위의 대답에있는 스키마를 기반으로 XML 문서에는 적어도 하나의 환경 * 노드가 있어야합니다. 그렇지 않으면 스키마에 대해 유효성을 검사하지 않습니다. 이 질문에 대한 대답이 있습니까? –

+0

Nopz,이 스레드를 확인 http://stackoverflow.com/questions/8511736/xsd-restricted-rule 그리고 당신은 내가 뭘하려고하는지 이해합니다. –