Этот вопрос заслуживает лучшего объяснения.
Мы видим, что два «табличных» элемента имеют различный смысл и ничего общего - они имеют одно и то же имя, но они принадлежат к разным словарям.
Вот еще несколько примеров имен элементов, которые могут принадлежать к различным словарям:
<furniture:table/>
<sql:table/>
<resataurant:table/>
<html:table/>
<sql:column/>
<architecture:column/>
<table:column>
<css:style/>
<architecture:style/>
<fashion:style/>
Здесь мы имеем три различных названия элементов: «таблицы »,« Column »и« style », каждая из которых принадлежит> 1 словарям.
Есть 8 различных словарей, представленные этими элементами:
furniture
, sql
, restaurant
и html
для имени table
sql
, architecture
и table
для имени column
css
, architecture
и fashion
за имя style
.
Цель пространства имен является определение словарного запаса, к которому принадлежит данное имя. Другими словами, устранить двузначные имена, принадлежащие разным словарям.
Вот типичныйимен декларации:
< XSL: таблицы стилей версия = "1,0"
xmlns:xsl
= "http://www.w3.org/1999/XSL/Transform"
>
Он связывает префикс пространства имен а для a namespace URI (Единый R Идентификатор источника).
Эффект этого объявления пространства имен является то, что имя: xsl:stylesheet
принадлежит пространству имен с пространствами имен URI-строка “http://www.w3.org/1999/XSL/Transform”
различных префиксов пространств имен могут быть связаны с тем же пространством имен URI - даже в пределах одной и той же XML документ.
Однако URI пространства имен должен быть глобально уникальным.: пространство имен XSLT всегда является одной и той же строкой, независимо от того, какой префикс связан с ней.
Приставка:
- ли часть имени атрибута, который следует за
"xmlns:"
- не может содержать символ
":"
- Если имя атрибута только
xmlns
то префикс «» (пустая строка)
NS U RI:
- Может быть любая строка:
"^%$23rt"
, "http://myComp.com"
, "my:my"
- Должно быть уникальным.
- Может ли быть значимым URL.
- Если это значимый URL, для этого не требуется страница с этим URL-адресом. Процессор XML не выдает HTTP-запрос для доступа к этому URL-адресу.
Обратите внимание:
- Пространство имен URI должен быть уникальным: это самое важное требование для пространства имен.
- Может ли (но не обязательно) быть значимым URL-адресом - что более важно, является уникальность строки.
- Если NS URI является значимым URL, это не требует, чтобы страница с этим URL-адресом существовала. Для NS URI не выдается HTTP-запрос.
Теперь, чтобы ответить на конкретные вопросы:
Я не понимаю эту строку кода в XSLT: xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
Что это для чего?
Это объявление пространства имен для XSLT пространства имен, который определяет XSLT словарь
Его цель заключается в неоднозначности любого элемента и имена атрибутов, которые находятся в этом пространстве имен из других вхождений те же имена, которые принадлежат другим словарям (или не принадлежат к какой-либо лексике (относятся к «пустой» лексике).
Что произойдет, если я пропущу это?
В случае нет имен XSLT декларации указано в документе XML, а затем:
- процессор XSLT не обнаружат никаких
<xsl:stylesheet>
декларации, инструкции, элементы или атрибуты, которые он понимает. Он не будет работать и, скорее всего, сообщит об ошибках.
- В случае отсутствия объявления пространства имен с префиксом «xsl», но внутри документа есть имена элементов (или атрибутов) с этим префиксом, тогда даже анализатор XML будет вызывать ошибку, что вход не является хорошим -формированный XML-документ.
И что это за указатель?
Как объяснялось ранее, пространство имен-uri может быть любой строкой и необязательно быть синтаксически допустимым URL. В случае, если он является синтаксически действительным URL-адресом, нет никаких обязательств относительно того, что будет HTTP-сервер, который будет предоставлять HTTP-ответ для любого HTTP-запроса с этим URL-адресом.
И процессор XSLT определенно не выдает такого HTTP-запроса - любой может доказать это, отключив все сети и выполнив любое преобразование XSLT - преобразование все еще дает свои результаты.
Но в данном конкретном случае, если вы попробуете этот URL в браузере, вы увидите, что W3C был дружественным к своим многочисленным пользователям и страница на самом деле служил:
Я читал некоторые сообщения об этом в W3Cschools ... Но я до сих пор не понял ...
W3Schools не считается хорошим ресурсом о XML/XSLT/XPath, - как пояснил т: W3Fools
Единственный авторитетный источник о XML, Пространства имен XML и XSLT является их соответствующая спецификация: http://www.w3.org/TR/2008/REC-xml-20081126/, http://www.w3.org/TR/2006/REC-xml-names-20060816/ и https://www.w3.org/TR/1999/REC-xslt-19991116 (последний является XSLT 1.0 спецификации - существуют отдельные спецификации для XSLT 2.0 и XSLT 3.0)
Однако спецификации W3C не были написаны с целью обеспечения удобства использования. Если кто-то хочет узнать больше о XSLT и XML, я бы порекомендовал свой видеокурс в Pluralsight: XSLT 2.0 and 1.0 Foundations - второй модуль этого курса подробно объясняет концепцию пространств имен XML.
http://www.w3schools.com/xml/xml_namespaces.asp. Есть миллион учебников по пространствам имен из поиска Google. – OldProgrammer
и почему мне нужно пространство имен в XSLT? Я просто получил один XSLT ... не может быть конфликта между XML и XSLT, я думаю. –
@ H.Senkaya: Если ваш XSLT не генерирует XML ... – choroba