В первом абзаце вы спросили, что если мы определим пространство имен XML и не будем его использовать?
Ну, ничего плохого не случится. Это просто для вашего использования, и вы не используете его. Это как переменная, определенная в вашей функции, которую вы просто не используете.
Теперь в одном из ваших утверждений есть ошибка, что вы не используете xsi, aop и пространство имен по умолчанию. Это неправда. Потому что xsi - это экземпляр схемы xml. Вы используете его в следующей строке, где пишете <xsi:schemaLocation ... />
. По сути, это позволяет вам создать экземпляр определения схемы, который вы создали в своем файле xsd / dtd. Вы можете / не могли использовать aop, я не могу сказать, пока вы не покажете мне XML-файл. Теперь с пространством имен по умолчанию вы немного запутались. Пространство имен по умолчанию в документах XML сообщает проверяющему схему, что все элементы, используемые в этом документе XML, объявлены в пространстве имен «<some namespace>
». См. http://www.w3schools.com/Schema/schema_schema.asp под заголовком «Ссылка на схему в документе XML».
Теперь ваш второй вопрос заключается в том, что все пространства имен обычно определяются как URL. Можем ли мы определить это как какое-то другое имя?
Да, вы можете. Вот пример файла xsd и xml.
<?xml
version="1.0"
encoding="UTF-8"
?>
<xs:schema
xmlns:xs="http://www.w3.org/2001/XMLSchema"
targetNamespace="mynamespace"
xmlns="mynamespace"
elementFormDefault="qualified"
>
<xs:element name="note">
<xs:complexType>
<xs:sequence>
<xs:element name="to">
<xs:complexType>
<xs:attribute name="lang" type="xs:string" use="required"></xs:attribute>
</xs:complexType>
</xs:element>
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:schema>
Вот XML:
<?xml
version="1.0"
encoding="utf-8"
?>
<note
xmlns:note="mynamespace"
xmlns="mynamespace"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="mynamespace myschema.xsd"
>
<note:to lang="en"></note:to>
</note>
Итак, вы можете видеть, что я определил другое имя для пространства имен, и оно отлично работает в моем затмении.
Я думаю (и я предполагаю здесь), что есть причина, по которой люди используют URI в качестве пространства имен. Потому что, если вы просто сохраните имя, как я сделал «mynamespace», и другие люди захотят импортировать / использовать вашу схему, тогда ваше имя и их имя могут столкнуться. Теперь вы не можете написать простое имя и надеяться, что каждый человек в мире не будет использовать это имя, поэтому люди используют URI в качестве своих пространств имен, потому что URI уникальны, и у других нет причин использовать ваш URI при создании схем для своих приложений. .
Ваш третий вопрос: почему мы не определили schemaLocation для приложения так же, как для xsi? Посмотрите еще раз в вашем schemaLocation. Вы определили 4 значения, разделенных пробелами. 2 для xsi и два для aop.
Ваш последний вопрос был, можете ли вы определить xsi1 вместо xsi. Вы можете. Infact вы можете определить любое имя, которое вы хотите. Это переменная, которая используется как сокращение для представления пространства имен.
PS: я недавно начал изучать XML / XSD. Поэтому, если вы найдете мой ответ неверным, пожалуйста, поделитесь правильным ответом, и я отредактирую свой. Спасибо.