0

別のxmlを「map1.xml」と呼ぶ「map.xml」というXMLがあります。Map.xmlにはmap.xslへの参照があります。

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>
4

3 に答える 3

3

XSLT の document() 関数を使用するのがよいようです。

たとえば、map2.xml の p 要素のコンテンツ/値を取得するには、次のようにします。

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

あなたの例でこれをテストしていませんが、それが私が試してみることです!

于 2013-02-15T15:46:39.733 に答える
1

別の XML ドキュメント内のノードにアクセスするには、XSLT document() 関数を使用します。簡単な例 (w3schools.com 提供) は、ここにあります。

私は新しいユーザーなので、回答に 2 番目のリンクを投稿できません。これが私にできる最善のことです。XSLT 標準の document() の説明は、www.w3.org/TR/xslt#document にあります。

于 2010-12-23T15:28:52.763 に答える
1

ソースは実際には次のようになるはずです (スタイルシートではなく、DTD またはスキーマへの参照を使用)。

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>

Davidの提案は正しいです。次の結果が得られます。

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>

サンプルデータでは、これは同じ結果につながります。ただし、<p> から派生した特殊な段落要素 <myp> がある場合でも、新しい要素に対して同じ変換を使用できます。

于 2013-02-15T20:31:37.970 に答える