У каждого пространства имен есть targetNamespace? - PullRequest
2 голосов
/ 25 марта 2012

Я уже некоторое время работаю с XML, но некоторые вещи я только что использовал, не понимая, почему они работают так, как работают. Теперь я хотел бы изменить это.

Этот вопрос о пространствах имен.

Это то, что я думаю, я понял до сих пор:

  1. Пространство имен может быть любой строкой. Это должен быть уникальный идентификатор во всем мире.
  2. Чтобы квалифицировать элемент XML с пространством имен, вы не можете просто использовать префикс пространства имен перед именем элемента, вам нужно использовать отдельный префикс, который должен быть объявлен в начале области, которую вы хотите применить. пространство имен в.
  3. Вы можете выбрать префикс.
  4. Вы не можете свободно выбирать пространство имен (?)
  5. Хотя пространство имен не обязательно ссылается на что-либо как URL, оно вполне может ссылаться на targetNamespace.

Теперь, мой вопрос, каждое пространство имен ссылается на targetNamespace? Когда я объявляю xsi префиксом для XML-схемы, объявляет ли XML-схема то же пространство имен, что и его targetNamespace? (где?). Когда я объявляю xsl префиксом для пространства имен XSLT, означает ли это, что пространство имен XSLT объявлено где-то как targetNamespace (где?)?

Если у нас могут быть пространства имен без какой-либо ссылки на targetNamespace, в каких ситуациях мы будем их использовать? Зачем они нам нужны?

Ответы [ 2 ]

2 голосов
/ 25 марта 2012

Вы делали ОК, пока

  1. Вы не можете свободно выбирать пространство имен (?)

Независимо от того, свободны ли вы выбирать пространство имен, зависит от того, чтоты хочешь сделать.Если вы создаете новый словарь, вы можете выбрать пространство имен (или вообще без пространства имен).если вы хотите использовать существующий словарь, такой как XHTML или MathML, DocBook или ... тогда, если вы, конечно, должны использовать указанное пространство имен.

  1. Хотя пространство имен не обязательно ссылается на что-либо какURL, он может очень хорошо ссылаться на targetNamespace.

Терминологическая проблема здесь, я думаю, поэтому я не уверен, что вы имеете в виду.сама спецификация пространства имен не имеет никакого понятия "targetNamespace".Термин используется для XML-схемы w3c, чтобы сказать, какое пространство имен элементы, описанные в схеме, происходят из "целевого пространства имен" схемы.Так что это не термин, который вы действительно можете применить к одному экземпляру пространства имен в документе XML.

, так что ...

Теперь, мой вопрос, каждый лиПространство имен ссылается на targetNamespace?

Как отмечалось выше, я не уверен, что этот вопрос имеет значение, но ответ по сути "нет".

Когда я объявляю xsi длябыть префиксом для XML-схемы, объявляет ли XML-схема то же пространство имен, что и ее targetNamespace где-нибудь?

есть схема для схемы, которая объявляет атрибуты, традиционно используемые для префикса xsi, и в этом смыслебудет это пространство имен в качестве целевого пространства имен, да.

Если у нас могут быть пространства имен без какой-либо ссылки на targetNamespace, в каких ситуациях мы будем их использовать?Зачем они нам нужны?

В любом пространстве имен, определенном без ссылки на схему XSD, нет ничего, что можно было бы назвать targetNamespace.Однако, если у вас есть рабочий процесс на основе XSD, вы всегда можете создать такую ​​схему, либо с нуля, либо путем преобразования схемы DTd или RelaxNg.Поэтому наличие или отсутствие схемы XSD для пространства имен не является неотъемлемым свойством пространства имен.Так, например, пространство имен XHTML http://www.w3.org/1999/xhtml в течение длительного времени (и опять же, в его воплощении html5) не имеет никакой связанной официальной схемы XSD, которая имеет этот URI в качестве целевого пространства имен.

1 голос
/ 25 марта 2012

«targetNamespace» - это, по сути, связь между документом схемы и пространством имен. Документ схемы связан с пространством имен, а пространство имен, с которым он связан, называется его целевым пространством имен, а не так, как каждый человек ассоциируется с числом, называемым их годом рождения. Поэтому вопрос о том, имеет ли «каждое пространство имен targetNamespace», немного напоминает вопрос о том, имеет ли каждое число год рождения.

Возможно, ваш вопрос в том, есть ли в каждом пространстве имен схема? Ответ на это нет. Вы можете создать пространство имен без создания схемы для него. Действительно, вы можете иметь много разных схем для одного и того же пространства имен.

...