ホームページ > バックエンド開発 > XML/RSS チュートリアル > XML DTD および XML スキーマのサンプル コードの詳細な紹介 (画像とテキスト)

XML DTD および XML スキーマのサンプル コードの詳細な紹介 (画像とテキスト)

黄舟
リリース: 2017-03-22 16:55:42
オリジナル
1393 人が閲覧しました

XML(eXtensible Markup Language) 拡張可能なマークアップ言語。 XML は、Web サービス プログラミングにおいて特に重要です。ネットワーク送信時にデータを送信するためのキャリアとして使用できます。 メタ言語として、xml はデータをマークし、データ型を定義するために使用できます。これにより、ユーザーは独自のマークアップ言語を定義できます。 これはネットワーク転送に最適であり、アプリケーションやベンダーに依存せずに構造化データを記述および交換するための統一されたアプローチを提供します。異種言語と異種プラットフォーム間のインタラクションを実現できます。 XML ドキュメントの定義方法には、ドキュメント タイプ定義 (DTD) と XML スキーマが含まれます。 DTD (Document Type Definition) は、ドキュメントの全体的な構造とドキュメントの構文を定義します (理解のために以下に対応する例があります)。これは広く使用されており、豊富なツールがサポートされています。 XML スキーマはより強力であり、管理情報などのより強力で豊富な機能を定義するために使用されます。 XML は、よりきめ細かい方法でコンテンツを宣言し、制約を定義し、複数のプラットフォーム間でのコンテンツのより有意義な送信を容易にすることができます。構造化データを記述するための形式を提供し、ネットワーク内でのデータ交換と表現を簡素化し、コード、データ、表現を分離し、データ交換の標準形式として機能するため、インテリジェント データ ドキュメントと呼ばれることがよくあります。 DTD はシャベルにたとえられますが、XML スキーマはより強力な掘削機であると言えます。 XML はマークアップ言語と呼ばれますが、その形式がより厳密であり、タグが閉じられている必要があり、XML がドキュメントの内容とセマンティクスをどのように分離するかではなく記述するという点で HTML (ハイパーテキスト マークアップ言語) とは異なります。文書が表示されるはずです。 HTML はタグが固定されており、表示と内容が一体となっており、独自のタグを作成することはできませんが、XML は拡張可能であり、各要素がペアで表示され、XML 要素の先頭と末尾が埋め込まれます。ネスト関係は正しく維持される必要があります (ネスト内で後から始まるタグが最初に終了し、最初に開始するタグが最後に終了する必要があります)。各 XML ドキュメントにはルート要素 (ルート要素) が 1 つだけ存在します。要素には他のすべての要素が含まれます。 XML 構文に準拠する XML 文書は、DTD または XML スキーマによって検証されない場合、整形式と呼ばれます。整形式の XML 文書が DTD または XML スキーマによって検証される場合、この種の XML 文書は有効 (有効) と呼ばれます。 )。 以下では、例として学生名簿の XML を使用します

<?xml version="1.0" encoding="utf-8"?>
<学生名册>
    <学生 学号="A1">
        <姓名>CIACs</姓名>
        <性别>男</性别>
        <年龄>22</年龄>
    </学生>

    <学生 学号="A2">
        <姓名>zhihao</姓名>
        <性别>男</性别>
        <年龄>23</年龄>
    </学生>
</学生名册>
ログイン後にコピー

整形式の XML ドキュメントの場合、XMLSpy の出力ウィンドウは次の結果を出力します

XML の最初の行は次である必要があります

< ;?xml version="1.0" ?>

処理命令。"xml 要素は厳密に大文字と小文字が区別されます、デフォルトのドキュメント エンコード形式は "UTF- 8」、バージョンは1.0のみです。上記の XML ドキュメントは、適切にフォーマットされた XML ドキュメントであるとしか言えず、有効な (Vaild) XML ドキュメントではありません。以下では 2 つの方法を使用して検証します。 まずDTDで検証します

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE 学生名册 [
<!ELEMENT 学生名册 (学生+)>
<!ELEMENT 学生 (名字,性别,年龄)>
<!ELEMENT 名字 (#PCDATA)>
<!ELEMENT 性别 (#PCDATA)>
<!ELEMENT 年龄 (#PCDATA)>
<!ATTLIST 学生 学号 ID #REQUIRED>
<!ENTITY  sex "男">
]>

<学生名册>
    <学生 学号="A1">
        <名字>CIACs</名字>
        <性别>&sex;</性别>
        <年龄>22</年龄>
    </学生>
    
    <学生 学号="A2">
        <名字>zhihao</名字>
        <性别>&sex;</性别>
        <年龄>23</年龄>
    </学生>
</学生名册>
ログイン後にコピー

検証が通るとXMLSpyの出力ウィンドウに以下の結果が表示されます

それ以外の場合はスペースが一つ多くても検証は通りません。ここでは DTD の検証を XML に記述しました。もちろん、ファイルの拡張子を「.dtd」として、それを検証対象の XML ドキュメントに関連付けることもできます。構文は次のとおりです。

1 DOCTYPE ルート要素名 SYSTEM "*.dtd"> ここでの ID 値は、単なる数字の場合は文字で始まるようです。検証に合格しません。

生徒情報の性別をエンティティとして定義し、

エンティティを通してその値を参照します。エンティティ参照の構文は「

&エンティティ名;」であることに注意してください。 XML Schemaメソッドで以下を検証します

検証対象のxml文書

<?xml version="1.0" encoding="utf-8"?>
<学生名册 xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="学生名册.xsd">
    <学生 学号="A1">
        <姓名>CIACs</姓名>
        <性别>男</性别>
        <年龄>22</年龄>
    </学生>

    <学生 学号="A2">
        <姓名>zhihao</姓名>
        <性别>男</性别>
        <年龄>23</年龄>
    </学生>
</学生名册>
ログイン後にコピー

XML Schema検証文書

<?xml version="1.0" encoding="UTF-8"?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" elementFormDefault="qualified" attributeFormDefault="unqualified">
    <xs:element name="学生名册">
        <xs:complexType>
            <xs:sequence minOccurs="1" maxOccurs="unbounded">
                <xs:element ref="学生"/>
            </xs:sequence>
        </xs:complexType>
    </xs:element>
    <xs:element name="学生">
        <xs:complexType>
            <xs:sequence>
                <xs:element name="姓名" type="xs:string"/>
                <xs:element name="性别">
                    <xs:simpleType>
                        <xs:restriction base="xs:string">
                            <xs:enumeration value="男"/>
                            <xs:enumeration value="女"/>
                        </xs:restriction>
                    </xs:simpleType>
                </xs:element>
                <xs:element name="年龄">
                    <xs:simpleType>
                        <xs:restriction base="xs:integer">
                            <xs:minExclusive value="0"/>
                            <xs:maxExclusive value="120"/>
                        </xs:restriction>
                    </xs:simpleType>
                </xs:element>
            </xs:sequence>
            <xs:attribute name="学号" type="xs:string" use="required"/>
        </xs:complexType>
    </xs:element>
</xs:schema>
ログイン後にコピー

XMLSpy出力ウィンドウの出力結果

検証対象のxml文書が開始されますルート要素から以下の情報をタグに追加してXML Schemaドキュメントを関連付けます

 1 xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="学生名册.xsd"
ログイン後にコピー
上記のドキュメントはすべて同じパスに配置されているので、ファイル名を直接引用するだけです。

上記の 2 つの検証方法から、DTD と XML スキーマの検証の違いが明確にわかります。どちらも、XML スキーマは DTD よりも強力な機能と
より詳細なデータ型を提供します。スキーマはデータ型をカスタマイズすることもできますが、dtd の構文は xml の構文とは異なります。 Schema はコード サイズの点で DTD よりも大きくなりますが、Schema を学習すると、Schema を使用することを好みます。

xml とその検証方法をよく学ぶことは、その後の Web サービス プログラミングを学ぶ上で非常に重要です。

以上がXML DTD および XML スキーマのサンプル コードの詳細な紹介 (画像とテキスト)の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

関連ラベル:
ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート