2017-08-07 12 views
0

の概念を把握しようとすると、私はエラーを取得していない:XML - 私のXSLは、次の見出しを持っている場合は、名前空間URI

<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" 

しかし、私は、XSL名前空間URIを変更した場合は...:

<xsl:stylesheet version="1.0" xmlns:xsl="https://www.w3schools.com/xml/xml_namespaces.asp" 

...私はエラーを取得する:

javax.xml.transform.TransformerConfigurationException 

私は、私もそれが任意のURL(しないようにすることができることをので、私は、名前空間URIの概念を理解していないと思いますそれがXML/XSLドキュメントで一意である限り、URNに言及してください)。明らかにそうではありません。私はこの理論をテストするためにURIを変更しようとしました。


https://www.w3schools.com/xml/xml_namespaces.aspで、我々は次の文を読むことができます:

名前空間URIは、情報を検索するために、パーサによって使用されていません。

URIを使用する目的は、名前空間に一意の名前を付けることです。

しかし、企業はしばしば名前空間情報を含むWebページへのポインタとして名前空間を使用します。

最初の文は、URIが指し示すWebページが何であるか気にしないことを意味します。なぜなら、私が望む任意のページ、または存在しないページ?なぜそれは特別にhttp://www.w3.org/1999/XSL/Transformでなければならないのですか?

はまた、後我々が読むことができる上記のリンクを:

URI(Uniform Resource Identifier)は、がインターネットリソースを識別する文字列です。このため、それが名前空間URIは言及していない、再び(URLなければならないことを意味しない、「URIを使用する目的は、名前空間に一意の名前を与えることである」ので、そう

xlmns:foo="A_random_but_unique_string" 
私は同じリンクから、この引用で終了します

名前空間 "私はこのような名前空間を設定することができないことを意味し、私は絶対に尋することができないのURN)、 http://www.w3.org/1999/XSL/Transform "はHTML文書内のXSLT要素を示します

これで、パーサーは名前空間の情報(名前空間の要素)を検索するために必ず名前空間URLを使用する必要があります。

答えて

1

URLの解決(およびスキーマのダウンロード)とは関係ありません。両方の例でXMLが同じように見えますが、 "xsl:stylesheet"では、入力はstylesheet要素(名前空間https://www.w3schools.com/xml/xml_namespaces.aspで示されます)として読み取られます。

Javaプログラムではstylesheet要素(名前空間http://www.w3.org/1999/XSL/Transformで識別される)が必要ですが、見つからないため例外がスローされます。

+0

ありがとうございます。 なぜこのURLから情報を抽出する必要がない場合でも、URI http://www.w3.org/1999/XSL/Transformによって識別される名前空間のスタイルシート要素が必要ですか?つまり、Javaプログラムには、このURLからスタイルシート要素が何であるかの知識はありません。スタイルシートは、URIに関係なくスタイルシートです。 – Flyout

+0

スタイルシートはランダム/カスタム形式ではありませんが、w3標準です。 Javaはすでにこの標準のスキーマ定義(XSD)を持っています。したがって、変換を準備する際には、これが期待と一致するかどうかを確認しようとします。 w3schoolsからスタイルシートを解釈する方法はわかりませんが、w3.orgスタイルシートスキーマ(正しいURIによって一意に識別される)に検証するXMLファイルを解析/解釈できることはわかっています。 – Fabian

+0

短い回答:w3schools URIを持つスタイルシートは、スタイルシートのXSDでは無効です。 – Fabian

関連する問題