2

我正在尝试使用 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。

因此,我使用 <xsl:for-each> 循环遍历对象,并使用另一个 <xsl:for-each> 循环遍历值。现在我必须从值中获取 Datatype-ID,找出它是哪个 Datatype 并将 Datatype-name 写入输出文件。我怎么做?

非常感谢你提前

4

1 回答 1

0

试试/Datatypes[DATATYPE-DEFINITION-STRING/@IDENTIFIER = current()/ATTRIBUTE-VALUE-STRING/DEFINITION/ATTRIBUTE-DEFINITION-STRING-REF]/DATATYPE-DEFINITION-STRING/@LONG-NAME

我承认我实际上并没有对此进行测试,但您可能会明白这一点。重点current是访问 XSLT 上下文(VALUES 元素),而不是在过滤器中处于活动状态的当前 XPath 上下文。

于 2013-06-21T16:11:06.480 回答