2013-06-21 31 views
2

我試圖使用XSLT將一個XML文檔(REQ-IF)轉換爲另一個XML文檔(UML類圖文檔)。使用XSLT將ReqIF轉換爲UML

我現在的問題是:

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>循環遍歷這些值。 現在,我必須從值中獲取數據類型ID,找出它的數據類型,並將數據類型名稱寫入輸出文件。 我該怎麼做?

非常感謝你提前

回答

0

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

我承認我沒有真正測試過這個,但你可能會明白。 current的要點是訪問XSLT上下文(VALUES元素),而不是在過濾器中處於活動狀態的當前XPath上下文。