2017-08-19 4 views
0

私はその後、相対的な名前空間を使用した検証署名しようとしていますXMLの部分を持っている:XML - 相対ネームスペースが無効とみなされるのはなぜですか?

org.apache.xml.security.c14n:

<Organization> 
    <OrganizationName xmlns:_xml="xml" _xml:lang="en">name</OrganizationName> 
    <OrganizationDisplayName xmlns:_xml="xml" _xml:lang="en">name</OrganizationDisplayName> 
    <OrganizationURL xmlns:_xml="xml" _xml:lang="en">http://www.example.com/</OrganizationURL> 
</Organization> 

OpenSAMLは、次の例外がスローされます。 CanonicalizationException:要素 組織名は、相対的な名前空間を持っています_XML = "XML"

はなぜ相対的な名前空間は悪いと考えていますか?確かにパーサーは真の値を解析するときに名前空間を解決できるだけでしょうか?

EDITは:相対URI参照のこの廃止は、W3C XML総会の投票[相対URI廃止]の定めた

:セクション2.2の下にいくつかの詳細

Namespaces in XML 1.1文書の状態を発見しました。また、 "DOM、XPathなどの後の仕様では、 の解釈は定義されません"と宣言しています。

これは、Ballot on relative URI Referencesで投票されました。

+1

ここで絶対名前空間URIを使用しない理由は何ですか? – Tomalak

+1

crewjam/samlプロジェクト[marshalled](https://github.com/crewjam/saml/blob/master/metadata.go#L107)このように – smokedice

答えて

1

名前空間の仕様が打ち砕かれているとき、名前空間の名前は名前(単なる一意性のために選ばれた文字列)でなければならないと考えるグループが2つあり、他のグループは、名前空間の内容の説明を提供するWeb上のリソースを特定します。おそらくスキーマ、おそらく他のものでしょう。さて、それが文字列であれば、どんな文字列でもできます。しかし、それがリソースの場所であれば、表示される要素のベースURIに対して相対参照が解決されると期待します。この時点では、2つの思考の学校の間に妥協の余地はなく、W3Cは名前空間の名前としての相対URIを許可すべきではないと判断しました。 、代わりに非難されました。

関連する問題