2010-12-23 60 views
0

我有一個名爲「map.xml」的XML,它調用另一個xml「map1.xml」.Map.xml引用了map.xsl。XATH中的XPATH - DITA XML文件

在XSLT中,我需要編寫代碼來獲取map1.xml中存在的節點值?你們中的任何人都可以爲此提出解決方案嗎?

下面特定的代碼來DITA標準

map1.xml:

<?xml version="1.0" encoding="UTF-8"?> 
     <!-- code to refer XSLT --> 
      <map title="DITA Topic Map"> 
    <topicref href="client.xml"/> 
     </map> 

map2.xml:

<?xml version="1.0" encoding="UTF-8"?> 
    <concept id="map2"> 
<title>Client Rights</title> 
<conbody> 
    <p>Part of your job as a healthcare provider.</p> 
</conbody> 
     </concept> 
+0

DITA按照自己的約定鏈接主題,而不是XPath或XPointer。檢查http://docs.oasis-open.org/dita/v1.0/dita-v1.0-spec-os-ArchitecturalSpecification.pdf – 2010-12-23 15:36:53

回答

1

使用XSLT文檔()函數來接入節點在一個單獨的XML文件。一個簡單的例子(禮貌w3schools.com)可以找到here

我是一個新用戶,所以我阻止我在我的答案中發佈第二個鏈接。下面是我可以做的最好的:XSLT標準對document()的解釋可以在www.w3.org/TR/xslt#document找到。

3

使用XSLT文檔()函數看起來像要走的路。

例如,爲了獲得p元素的含量/值map2.xml:

<xsl:value-of select="document('map2.xml')/concept/conbody/p"/> 

有沒有在你的例子測試了這個,但是這就是我會嘗試!

1

我認爲,根源實際上應該是這樣的(與參考的DTD或模式,而不是一個styleheet):

map.xml

<?xml version="1.0" encoding="UTF-8"?> 
<!DOCTYPE map PUBLIC "-//OASIS//DTD DITA Map//EN" "map.dtd"> 
<map title="DITA Topic Map"> 
    <topicref href="client.xml"/> 
</map> 

client.xml的

<?xml version="1.0" encoding="UTF-8"?> 
<!DOCTYPE concept PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd"> 
<concept id="client.xml"> 
<title>Client Rights</title> 
<conbody> 
    <p>Part of your job as a healthcare provider.</p> 
</conbody> 
</concept> 

大衛的建議是正確的,它爲您提供了以下結果:

Part of your job as a healthcare provider. 

精益求精:要使用DITA的專業化功能,你想用這樣的:

<?xml version="1.0" encoding="UTF-8"?> 
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" 
    version="2.0"> 

<xsl:output omit-xml-declaration="yes"/> 

<xsl:template match="*[contains(@class, ' map/topicref ') and @href]"> 
    <xsl:variable name="topic" select="document(@href, .)"/> 
    <xsl:value-of select="$topic//*[contains(@class, ' topic/p ')]"/> 
</xsl:template> 

</xsl:stylesheet> 

與樣本數據,這導致了同樣的結果。但是,如果您有一個專門的段落元素<myp>從<p>派生,您仍然可以對新元素使用相同的轉換。