целевое пространство имен схемы

Я хочу выполнить проверку XML, чтобы проверить, соответствует ли входной файл XML файлу схемы (.xsd). Мой вопрос: когда нам нужно указывать параметр целевого пространства имен и какова функция параметра целевого пространства имен?

Я получил этот вопрос со следующих страниц MSDN,

http://msdn.microsoft.com/en-us/library/1hh8b082.aspx

http://msdn.microsoft.com/en-us/library/system.xml.schema.xmlschemaset.aspx

В частности, я имею в виду 1-й параметр метода Add класса XmlSchemaSet.

EDIT1: Меня сейчас смущает следующее:

  1. В файле схемы XML есть атрибут целевого пространства имен вверху, и все элементы, определенные в этом файле схемы XML, определены в целевом пространстве имен;
  2. В файле документа XML для проверки схемы документ XML может использовать элементы, определенные в «целевом пространстве имен» файла схемы XML, а также может использовать элементы из других пространств имен, отличных от «целевого пространства имен», определенного в файле схемы XML. ;
  3. Вопрос в том, должны ли мы просто добавить «целевое пространство имен» в метод Add класса XmlSchemaSet или добавить все пространства имен, которые XML-документ будет использовать, в метод Add класса XmlSchemaSet?
  4. Другой вопрос: можем ли мы определить несколько «целевых пространств имен» в файле схемы XML? Если да, то как?

person George2    schedule 15.04.2009    source источник


Ответы (1)


Вам нужно будет использовать этот параметр, если вы используете пространства имен в своем XML-документе, например. если некоторые из ваших тегов были в форме <xx:TagName>. В противном случае вы можете просто передать пустую строку "".

person dommer    schedule 15.04.2009
comment
Чтобы добавить к вашему ответу, вам нужно передать Null/Nothing в качестве targetNamespace, если вы хотите, чтобы XmlSchemaSet использовал пространство имен, определенное в XmlSchema. Это позволяет обойтись без явной передачи пространства имен в методе Add. +1 - person Cerebrus; 15.04.2009
comment
@dommer, используя пространства имен в вашем документе, вы имеете в виду использование пространства имен в документе XML или документе схемы? - person George2; 15.04.2009
comment
@Cerebrus, используйте пространство имен, определенное в XmlSchema, что означает пространство имен, определенное в файле схемы XML или что-то еще? Не могли бы вы проиллюстрировать свои мысли образцом здесь (об образцах books.xml и books.xsd)? msdn.microsoft.com/en-us/library/ - person George2; 15.04.2009
comment
@George: Вы правильно догадались ... Это означает пространство имен, определенное в файле схемы Xml. - person Cerebrus; 15.04.2009
comment
@dommer, в проверяемом XML-документе могут использоваться различные пространства имен. Но, кажется, я мог назначить только одно пространство имен из метода XmlSchemaSet.Add? Не могли бы вы объяснить связь между пространством имен, назначенным методом XmlSchemaSet.Add, и пространствами имен, используемыми проверяемым XML-документом? - person George2; 15.04.2009
comment
@Cerebrus, в образце books.xsd есть такое утверждение, как -- targetNamespace=contoso.com/books означает ли это, что все содержимое определения схемы в books.xsd принадлежит пространству имен contoso.com/books? - person George2; 15.04.2009
comment
@Джордж. Вы можете назначить несколько пространств имен, вызвав XmlSchemaSet.Add несколько раз. - person dommer; 15.04.2009
comment
@dommer, в образце books.xsd есть такая инструкция, как -- targetNamespace=contoso.com/books; означает ли это, что все содержимое определения схемы в books.xsd принадлежит пространству имен contoso.com/books?, как элемент цены, элемент ISBN? - person George2; 15.04.2009
comment
@dommer и @Cerebrus, я отредактировал свой исходный вопрос, и, пожалуйста, обратитесь к разделу EDIT1 для моих вопросов 3 и 4. Есть идеи для 3/4? - person George2; 15.04.2009