Первоначально я создал следующую переменную:
<xsl:variable as="document-node()" name="changesTexts">
<xsl:document>
<ps >
<p>Processed with <ptr target="#{$applicationID}"/>.</p>
<p>proofreading according to workflow 1.1.</p>
</ps>
</xsl:document>
</xsl:variable>
Когда я попытался получить к ней доступ таким образом
<xsl:variable name="p" select="$changesTexts//p"/>
Это не сработало: в результате появился пустой элемент (),
После того как я добавил пространство имен к корневому элементу,
<ps xmlns="http://www.music-encoding.org/ns/mei">
Я могу получить доступ к нужным элементам следующим образом:
<xsl:variable name="p" select="$changesTexts//mei:p"/>
Таким образом, в основном я решил свою проблему, но яхотел бы понять, как все работает.Я не мог понять, какое пространство имен по умолчанию получают элементы в первом случае.Я попытался:
- name () (Кстати, это не показывает мне пространство имен в обычном XML-документе)
- namespace-uri ()
Кроме того, я заметил в отладчике, что переменная $ changesTexts имеет тип document-node
, а в других случаях, когда я использую fn:document()
, переменные имеют тип document-node (1).Так что, очевидно, есть небольшая разница (?)