但是根元素本身使用「流」命名空間,其中 似乎很奇怪。這是有效的XML嗎?
這並不奇怪,根元素本身不過是使用stream
命名空間,...
有效必須是相對於XSD,和XSD將不得不與XML實例相關聯。我看到在名稱空間指定的端點上有一個XSD:http://etherx.jabber.org/streams.xsd
。
一種常見的方式,使該協會將使用xsi:schemaLocation
屬性:
<stream:stream xmlns:stream='http://etherx.jabber.org/streams'
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://etherx.jabber.org/streams http://etherx.jabber.org/streams.xsd"
from='chat.facebook.com' id='1' version='1.0'>
</stream:stream>
驗證,然後可以找到XML Schema來使用,但是,有一個問題:
[Error] streams.xsd:23:21: cos-nonambig: WC["urn:ietf:params:xml:ns:xmpp-tls"] and WC[##other:"http://etherx.jabber.org/streams"] (or elements from their substitution group) violate "Unique Particle Attribution". During validation against this schema, ambiguity would be created for those two particles.
[Error] streams.xsd:74:21: cos-nonambig: "urn:ietf:params:xml:ns:xmpp-streams":text and WC[##other:"http://etherx.jabber.org/streams"] (or elements from their substitution group) violate "Unique Particle Attribution". During validation against this schema, ambiguity would be created for those two particles.
的Unique Particle Attribution是XSD的必需約束。因此,爲了回答您的問題,我們不能說XML是有效的,因爲我們沒有一個有效的XSD來對其進行驗證。
名稱空間的範圍是聲明和包含元素的元素。因此ns被聲明的元素使用ns是完全有效的。 –