ホームページ  >  記事  >  バックエンド開発  >  XML の簡潔なチュートリアル (5)

XML の簡潔なチュートリアル (5)

黄舟
黄舟オリジナル
2017-02-18 15:31:191435ブラウズ

目次


開発履歴

XMLと拡張可能なHTMLの比較

XMLと構文詳細のHTML比較

XML 検証 DTD

XML名前空間

XML構文構造

DOM4J設定ファイルの読み取りと書き込み

SLTについて

XML



1つ XML ドキュメントには多くの要素や属性を含めることができます。これは、他の人の XML ドキュメントを使用したり、複数の検証ファイル (DTD または スキーマ) を使用したりするときに発生する可能性があります。同じ要素またはjavaの多くのクラスのクラス名は同じですが、これらのクラスの特定の機能が異なるのと同様に、これらの要素または属性の意味は異なります。そのため、Javaでは、人々はパッケージという概念が導入されました。異なるパッケージの下にある同じ名前のクラスは異なる機能を持ち、これにより同じ名前のクラスが効果的に区別されます。同様に、名前の重複の問題を解決するために、XMLに名前空間が導入されています。まず次の例を見てください

<?xml version="1.0" encoding="gb2312" ?>
<books>
	<book>
		<title>JSP深入编程</title>
		<author>
			<name>张三</name>
			<title>作家</title>
		</author>
	</book>
	<book>
		<title>XML从入门到精通</title>
		<author>
			<name>李四</name>
			<title>教师</title>
		</author>
	</book>
</books>



これは本に関する整形式のXMLドキュメントですが、要素に矛盾があります。つまり、 title要素の意味 本のタイトルは著者のタイトルを表すためにも使用されますが、同じ名前の2つの要素は異なる意味を持ちます。これにより、XML パーサーが非常に読みにくくなり、正しく XML を検証できなくなります。この問題を解決するには、名前空間を使用して同一の要素を区別します。その前に、まず XML 名前空間の定義を紹介します:

62884d5f16769342b9f45bdb3fe0929d

元素名是指在该元素上声明命名空间,在这个元素上声明的名称空间适用于声明它的元素和属性,以及该元素内容中的所有元素及属性prefixname是名称空间的前缀,往往URI比较长所以可以用prefixname来代替URI比如下面的例子

<hr xmlns:hr="http://blog.csdn.net/beijiguangyong">


上面的句子声明了一个名称空间,它的名字是http://www.php.cn/。一般而言这个名称很长,于是就用了hr来表示,作为该名称空间下的元素或者属性可以其在前面加上前缀hr。例如3054b7184ac02298ea7ae5766c4f2c08就表示employee元素属于此命名空间下。所以上面的那个拥有title重复属性的xml为了区分歧义可以写成下面这样

<?xml version="1.0" encoding="utf-8" ?>
<books xmlns:people="http://blog.csdn.net/beijiguangyong">
	<book>
		<title>JSP深入编程</title>
		<author>
			<name>张三</name>
			<title>作家</title>
		</author>
	</book>
	<book>
		<title>XML从入门到精通</title>
		<author>
			<people:name>李四</name>
			<people:title>教师</title>
		</author>
	</book>
</books>



其中people是名称空间http://www.php.cn/的前缀,用于表示相应的元素是属于该命名空间下的。对于上面的XML而言解析器就很容易区分people:titletitle的不同。

还有另一种定义名称空间的方式:

8ebf97d094d4f7e3cf0c3251d9bf2973

这种声明形式没有给出名称空间的前缀名,我们可以认为URI所标识的是一个默认的名称空间。例如5f9e0a8344348d6297757aae2a36262b表明了一个默认的名称空间,除非元素中有其他的命名空间进行覆盖,否则hr元素及其内容中所有的没有前缀的元素都属于http://www.php.cn/所标识的名称空间

名前空間を理解すると、スキーマを使用してXMLの正しさを検証する方法を学ぶのが簡単になります。

上記は XML 簡潔なチュートリアル (5) の内容です。さらに関連する内容については、PHP 中国語 Web サイト (www.php.cn) に注目してください。


声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。