2017-01-21 8 views
1

Допустимо ли иметь документ XML, который дважды использует один и тот же префикс пространства имен?Можете ли вы повторно использовать одно и то же пространство имен в документе XML

В следующем документе префикс s используется дважды, но во вложенном элементе URI отличается.

Действительно ли?

<?xml version="1.0" encoding="utf-8"?> 
<s:Application xmlns:fx="http://ns.adobe.com/mxml/2009" 
       xmlns:s="library://ns.adobe.com/flex/spark"> 
    <fx:Declarations> 
     <s:MyObject xmlns:s="library://ns.mysite.com"> 
      <s:Paragraph>hello world</s:Paragraph> 
     </s:MyObject> 
    </fx:Declarations> 
</s:Application> 

ответ

2

Да, префикс не имеет особого значения сам по себе - только как псевдоним пространства имен.

Прекрасно действует XML с каждым именем узла, имеющего уникальное пространство имен, даже если все они имеют одинаковый префикс:

<a:r xmlns:a="urn:one"> 
    <a:p xmlns:a="urn:two"> 
     <a:c xmlns:a="urn:three"> 
     </a:c> 
    </a:p> 
</a:r> 

Это также относится к пустой префикс (по умолчанию), который может быть изменен для каждого узла тоже. Ниже действует XML с каждым узлом с именем собственным namespce даже никто не имеет префикс:

<r xmlns="urn:one"> 
    <p xmlns="urn:two"> 
     <c xmlns="urn:three"> 
     </c> 
    </p> 
</r> 

Обратите внимание, что префиксы в XPath селекторов не связаны в префиксы в любом данном документе XML и должны иметь отдельное отображение префикса к Пространство имен. Кроме того, в XPath префиксы должны иметь уникальное сопоставление (для него нет стандарта, а отображение специфично для каждой реализации DOM Xml).

Например, для первого XML в этом сообщении у вас не может быть XPath, который похож на XML, такой как «/ a: r/a: p/a: c», поскольку каждый префикс должен сопоставляться с другим пространством имен. Xpath будет выглядеть как «/ p1: r/p2: p/p3: c» с отображением префиксов {p1-> urn: one, p2-> urn: two, p3-> urn: three}.