/ / namespaces y atributos con foo, bar - xml-namespaces

espacios de nombres y atributos con foo, barra - espacios de nombres xml

Tengo este código:

<a:foo qux="A" xmlns:a="B" xmlns:b="C">
<b:bar a:quux="D" xmlns="E"/>
<xmlns xmlns:a="F" xmlns="G">
<baz a:corge="H" xmlns:baz="I" xmlns=""/>
</xmlns>
</a:foo>

Mi pregunta es ¿a qué espacios de nombres pertenece foo, bar y bas? y a qué espacios de nombres pertenece qux, quux y forge?

Creo que foo pertenece a a y bar pertenece a b, pero no sé si eso es correcto.

Respuestas

0 para la respuesta № 1

Su código de muestra parece muy confuso. Los espacios de nombres son un concepto fundamental en XML. Si no está familiarizado con los espacios de nombres, tómese el tiempo para aprenderlos y comprenderlos.

Algunas notas generales:

  • xmlns="something" es una declaración de espacio de nombres, no es un atributo,
  • no confunda los prefijos del espacio de nombres con los URI del espacio de nombres, están separados,
  • no confunda los prefijos de espacios de nombres con elementos de elementos o nombres de atributos no prefijados, están separados,
  • los elementos y también los atributos pueden pertenecer a un espacio de nombres,
  • no utilice xmlns como nombre del elemento,
  • si usa un prefijo, debe estar vinculado a un URI de espacio de nombres que esté dentro del alcance

Las respuestas a sus preguntas se incluyen a continuación como comentarios a su código de muestra.

<!-- foo belongs to "B", attribute qux has no namespace -->
<a:foo qux="A" xmlns:a="B" xmlns:b="C">
<!-- bar belongs to "C", quux belongs to "B" -->
<b:bar a:quux="D" xmlns="E"/>
<!-- Using element names that begin with xml is against the
XML recommendation. Furthermore, xmlns as element name
does not create a namespace definition -->
<xmlns xmlns:a="F" xmlns="G">
<!-- baz has no namespace, since this element has an empty
default namespace declaration that overrides the one
set the parent element.
corge belongs to "F" because prefix "a" was redefined
in the parent element -->
<baz a:corge="H" xmlns:baz="I" xmlns=""/>
</xmlns>
</a:foo>