我正在处理从ArgoUML导出的XMI文档。它具有
形式的元素
<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"/>
我已经在xslt文件的顶部声明了xmlns:UML =“org.omg.xmi.namespace.UML”。我想我应该使用类似的东西:
<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属性类型是Integer,但这给了我
SystemId Unknown; Line #136; Column #94; A location step was expected following the '/' or '//' token.
如果我将xmlns更改为AAA,那么我没有错误,只有空标记。我在Debian上使用Xalan2。我错过了什么?
答案 0 :(得分:0)
别介意我。只是犯了混淆名称空间和URI的经典错误。我真正需要的是&lt; xsl:value-of select ='document($ ns)// UML:DataType [@ xmi.id = $ identifier] / @ name'/&gt;