2017-06-08 4 views
1

例のXSD定義のカップルを考える:xsdスキーマを参照し、属性値の名前空間をエイリアス/バインドする方法は?

http://docs.oasis-open.org/security/saml/v2.0/saml-schema-assertion-2.0.xsd

https://www.w3.org/TR/2002/REC-xmldsig-core-20020212/xmldsig-core-schema.xsd

両方XSDドキュメントは、要素、属性、attributeGroupsおよび/または種類、同じドキュメント内の自己参照他の定義ことを定義します。最初のタイプの場合、これらのタイプは、saml名前空間エイリアス/バインディングを使用して名前空間にあるように見えます。例:

<attributeGroup ref="saml:IDNameQualifiers"/> 

及び第二の場合には、それらが結合ds名前空間のエイリアス/を使用して名前空間れます。例:

<element ref="ds:SignedInfo"/> 

しかし、いずれかのドキュメントをFirefoxで見ると、これらの名前空間のエイリアスまたはバインディングが定義されているいずれのドキュメントにも表示されません。第二の場合と同様に

targetNamespace="urn:oasis:names:tc:SAML:2.0:assertion" 

targetNamespace="http://www.w3.org/2000/09/xmldsig#" 

が、それはsaml第1およびdsへの第二のエイリアスだけの規約です

最初の文書のルート要素はtargetNamespace属性を与えますか?もしそうなら、どこでこれらの慣習を見つけることができますか?そうでない場合、これらの名前空間を解決するために何が行われていますか?

答えて

1

バインディングが定義された名前空間xmlns:属性を持つスキーマのルート要素に(ベストプラクティスであるとして):

SAMLスキーマ・アサーション-2.0.xsdは

<schema 
    xmlns="http://www.w3.org/2001/XMLSchema" 
    xmlns:saml="urn:oasis:names:tc:SAML:2.0:assertion" 
    [...] 
    targetNamespace="urn:oasis:names:tc:SAML:2.0:assertion" 
    [...]> 

XMLDSIG、コア - schema.xsd

<schema 
    xmlns="http://www.w3.org/2001/XMLSchema" 
    xmlns:ds="http://www.w3.org/2000/09/xmldsig#" 
    targetNamespace="http://www.w3.org/2000/09/xmldsig#" 
    [...]> 

は、これらのバインディングは要素のみに適用され、また、XML文書であるスキーマで(属性名をしていない、彼らはXMLのScにほとんどありますhema名前空間または名前空間なし)、関連するスキーマ(この場合はthe XML Schema Schema)のQNamesとして宣言されている属性値にも適用されます。

これはreftype属性(上記のリンク先のスキーマスキーマから引用)の場合である:

<xs:attribute name="ref" type="xs:QName"/> 
<xs:attribute name="type" type="xs:QName"/> 
<!-- observe how the declaration for the type attribute uses itself! --> 

これは、独自の要素/属性/型宣言を参照する任意のスキーマで、理由ですターゲットネームスペースを持つ場合、このターゲットネームスペースは、refおよびtypeの属性値で使用する接頭辞(または既定値)にバインドする必要があります。

簡単に言えば、ここに含まれる機械を理解するための重要なアイデアは、2つの.xsd文書がスキーマであり、その代わりに有効なその他のXML文書と見なすことを忘れてしまうことですXMLスキーマスキーマXMLスキーマスキーマはXML文書でもあり、それ自体に対して有効です。これがXMLスキーマのブートストラップ方法です。

+0

私はそれが当てはまると思っていましたが、私はスキーマを調べているときに 'xmlns'属性を見ることができませんでした。 FirefoxにはデフォルトのXMLビューアが表示されていないことが判明しましたが、それらはすべてそこにありました。 * facepalm * – Benjamin

+0

これは明らかに[長年にわたる問題です](https://bytes.com/topic/net/answers/604358-why-do-xml-schema-attributes-disappear#post_message_2380915) – Benjamin

関連する問題