Определение локального пространства имен XML работает не так, как я ожидал

Я обрабатываю документ XMI, экспортированный из ArgoUML. Имеет элементы формы

<UML:DataType href='http://argouml.org/profiles/uml14/default-uml14.xmi#-84-17--56-5-43645a83:11466542d86:-8000:000000000000087C'/>

который указывает на элемент формы

<UML:DataType xmi.id="-84-17--56-5-43645a83:11466542d86:-8000:000000000000087C"
              name="Integer"
              isSpecification="false"
              isRoot="false"
              isLeaf="false"
              isAbstract="false"/>

Я уже объявил xmlns:UML="org.omg.xmi.namespace.UML" в верхней части файла xslt. Я думаю, что я должен использовать что-то вроде:

<xsl:variable name="typeref" select="@href"/>
<xsl:variable name="ns" select='substring-before($typeref, "#")'/>
<xsl:variable name="identifier" select='substring-after($typeref, "#")'/>
<xsl:value-of xmlns:UML="$ns" 
              select='//UML:DataType[@xmi.id="$identifier"]/@name'/>

сделать вывод, что мой тип атрибутов UML является целочисленным, но это дает мне

SystemId Unknown; Line #136; Column #94; A location step was expected following the '/' or '//' token.

Если я изменяю xmlns на AAA, то я получаю не ошибку, а пустой тег. Я использую Xalan2 на Debian Squeeze. Что мне не хватает?

1 ответ

Не против меня Просто делаю классическую ошибку, объединяя пространства имен и URI. Что мне действительно нужно, так это

Другие вопросы по тегам