7

知りたいのですが、xmlドキュメントにxmlns URLの本当の意味はありますか?

私はリンクを参照していました。今、私xmlns:xsl="http://www.w3.org/1999/XSL/Transform" が何か他のものに変更すると、それは動作を停止しました。w3cによると、名前空間名(またはURL)はxmlタグを区別するためだけのものです。URLを変更した後に機能しない理由よりも。

だから私はそれがそのURLと関係があるのではないかと思ったので、ローカルで(インターネットなしで)試してみました。次の例を参照してください。

XMLドキュメント。(first.xml)

<?xml version="1.0" encoding="ISO-8859-1"?>
<?xml-stylesheet type="text/xsl" href="first.xsl"?>
<!-- Edited by XMLSpy® -->
<catalog>
    <cd>
        <title>Unchain my heart</title>
        <artist>Joe Cocker</artist>
        <country>USA</country>
        <company>EMI</company>
        <price>8.20</price>
        <year>1987</year>
    </cd>
     <cd>
        <title>Pavarotti Gala Concert</title>
        <artist>Luciano Pavarotti</artist>
        <country>UK</country>
        <company>DECCA</company>
        <price>9.90</price>
        <year>1991</year>
    </cd>
    <cd>
        <title>The dock of the bay</title>
        <artist>Otis Redding</artist>
        <country>USA</country>
        <company>Atlantic</company>
        <price>7.90</price>
        <year>1987</year>
    </cd>
</catalog>

XSLTドキュメント(first.xsl)

<?xml version="1.0" encoding="ISO-8859-1"?>
<!-- Edited by XMLSpy® -->
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">

<xsl:template match="/">
  <html>
  <body>
  <h2>My CD Collection</h2>
    <table border="1">
      <tr bgcolor="#9acd32">
        <th>Title</th>
        <th>Artist</th>
      </tr>
      <xsl:for-each select="catalog/cd">
      <tr>
        <td><xsl:value-of select="title"/></td>
        <td><xsl:value-of select="artist"/></td>
      </tr>
      </xsl:for-each>
    </table>
  </body>
  </html>
</xsl:template>
</xsl:stylesheet>

だから、そのうまく機能している地域。xmlns:xsl="http://www.w3.org/1999/XSL/Transform"しかし、私がそのようなものに変更するxmlns:xsl="http://www.abc.com"と、ブラウザでエラーが発生します。

Error loading stylesheet: Parsing an XSLT stylesheet failed.

したがって、唯一の質問は、xmlnsにこのURLの本当の意味があるかどうかです。はいの場合は、xslのURLを変更するのではなく、インターネットなしで機能した理由よりも優れています。

4

3 に答える 3

8

これはURLではなく、URIです。つまり、場所(住所)ではなく、識別子(名前)です。

XMLの名前空間は、Javaのパッケージ名に似ています。競合を防ぎ、語彙の定義の所有権を主張するために、さまざまな語彙がさまざまな名前空間で定義されています。パッケージ名と同様に、名前空間はその名前空間内の要素の名前の暗黙的な部分になるため<para>、Docbook名前空間<para>ではDITA名前空間とは関係がありません。

James Clarkは、名前空間に関する優れたチュートリアルをここに作成しました:http ://www.jclark.com/xml/xmlns.htm

于 2012-07-22T17:41:25.487 に答える
1

xmlnsにこのURLの本当の意味はありますか

これは基本的なXMLの質問であり、XSLTの質問ではありません。

名前空間-uriは、特定のXMLベースの言語を識別する目的を果たします-このラボゲージのすべての要素名を同じ名前空間に含める(すべての要素名を同じ名前空間-uriにする)。

それ以外に、名前空間URIには追加の目的はありません。

したがって、すべてのXSLT要素(および一部の属性)は"http://www.w3.org/1999/XSL/Transform"名前空間にあり、この名前空間を持たない名前の要素-uriはXSLT要素ではありません

その他の例は次のとおりです。

  • XMLスキーマ:"http://www.w3.org/2001/XMLSchema"

  • SVG:"http://www.w3.org/2000/svg"

  • XSL-FO:http://www.w3.org/1999/XSL/Format

  • XHTML:"http://www.w3.org/1999/xhtml"

  • XPath 2.0およびXQuery関数:http://www.w3.org/2005/xpath-functions

  • XLink:"http://www.w3.org/1999/xlink"

  • MathML:"http://www.w3.org/1998/Math/MathML"

したがって、スタイルシートのXSLT名前空間-uriを別のものに変更することで、効果的に次のようになります。関連するプレフィックス(この場合は「xsl」)がプレフィックスとして付けられた"http://www.abc.com"名前は、XSLT名前空間ではなく、名前空間に属します。 XSLT要素ではありません。

そしてもちろん、XSLTプロセッサがXSLT要素ではない要素が供給されていることを確認すると、XSLTプロセッサはこれについて文句を言います。

于 2012-07-22T14:59:57.820 に答える
0

ブラウザ(それぞれXSLTプロセッサ)は、名前空間にXSLT要素を含むXSLT言語をサポートしていますhttp://www.w3.org/1999/XSL/Transform。XSLTスタイルシートではないXMLドキュメントにリンクするために使用する場合<?xml-stylesheet type="text/xsl" href="first.xsl"?>、もちろんブラウザー(それぞれXSLTプロセッサー)はコードを理解しません。XMLの世界では、アイテムの修飾名は名前空間とローカル名で構成され、どのツールも既知の名前のみをサポートします。XHTMLをXMLとしてブラウザに提供する場合は、XHTML要素にXHTML名前空間を使用していることを確認する必要がありますhttp://www.w3.org/1999/xhtml。そうしないと、XHTML要素と同じローカル名を持っていても、ブラウザは要素を認識しません。XSLTコードでも同じことが起こります。ブラウザーが要素をXSLT要素として認識するためには、適切な名前空間と適切なローカル名の両方が必要です。

于 2012-07-22T14:16:50.593 に答える