我尝试使用XSLT将一个XML文档(REQ-IF)转换为另一个XML文档(UML-Class-Diagram文档)。
我的问题现在如下:
REQ-IF提供的数据类型为:
<Datatypes>
<DATATYPE-DEFINITION-STRING IDENTIFIER="xyz" LONG-NAME="ABC"
</Datatypes>
和对象:
<SPEC-OBJECTS>
<VALUES>
<ATTRIBUTE-VALUE-STRING THE-VALUE="some-value">
<DEFINITION>
<ATTRIBUTE-DEFINITION-STRING-REF>xyz</ATTRIBUTE-DEFINITION-STRING-REF>
</DEFINITION>
</ATTRIBUTE-VALUE-STRING>
</VALUES
<SPEC-OBJECTS>
这在我的UML表示中类似于:
<ownedAttribute xmi:id="some-ID" name="ABC" type="some-ID">
请注意ABC和xyz。
因此我使用&lt; xsl:for-each&gt;循环遍历对象和另一个&lt; xsl:for-each&gt;循环遍历值。 现在我必须从值中获取Datatype-ID,找出它是哪种数据类型,并将Datatype-name写入输出文件。 我该怎么做?
非常感谢你提前
答案 0 :(得分:0)
尝试/Datatypes[DATATYPE-DEFINITION-STRING/@IDENTIFIER = current()/ATTRIBUTE-VALUE-STRING/DEFINITION/ATTRIBUTE-DEFINITION-STRING-REF]/DATATYPE-DEFINITION-STRING/@LONG-NAME
。
我承认我实际上没有测试过这个,但你可能会得到这个想法。 current
的要点是访问XSLT上下文(VALUES元素),而不是过滤器中活动的当前XPath上下文。