Когда следует использовать пространства имен W3C xmlns и xmlns: xsi? - PullRequest
0 голосов
/ 05 июля 2011

У меня есть довольно фундаментальный вопрос о XML здесь. При объявлении атрибута xmlns элемента разрешено ли когда-либо использовать http://www.w3.org/2001/XMLSchema? А при объявлении атрибута xmlns:xsi допустимо ли использовать http://www.w3.org/2001/XMLSchema-instance в качестве значения?

Я спрашиваю об этом, потому что я видел, как XML автоматически генерировался некоторыми редакторами XML, которые ссылаются на эти пространства имен, и все же (по крайней мере, на странице XMLSchema-instance) W3C говорит, что «Эта схема никогда не должна использоваться как таковая: Рекомендация схемы XML запрещает объявление атрибутов в этом пространстве имен ".

Так что я в замешательстве; всегда незаконно говорить что-то вроде:

<?xml version="1.0" encoding="UTF-8"?>
<myElement xmlns="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
    [...]
</myElement>

... а если нет, то почему W3C, кажется, говорит, что пространство имен никогда не должно использоваться? Для чего его использовать? Я пытался прочитать спецификацию XML 1.0, но она чрезвычайно многословна и трудна для понимания.

1 Ответ

2 голосов
/ 05 июля 2011

Это пространство имен не должно использоваться ни для чего другого.Он должен использоваться для ссылки на атрибуты, объявленные в этом пространстве имен.

Вы не можете объявлять какие-либо элементы или атрибуты в пространстве имен, принадлежащем кому-то другому.Это означает, что вы не можете объявить свой myElement в пространстве имен «XMLSchema».


<?xml version="1.0" encoding="UTF-8"?> 
<root xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
    <genericElement xsi:type="xs:string">string</genericElement>
</root>
...