アプリ版:「スタンプのみでお礼する」機能のリリースについて

複数の実体を宣言して、
その実体の宣言を変数で行うことができないでしょうか。

honbun.xmlの中で
 <TEST ID="A" />
 <TEST ID="B" />
 <TEST ID="C" />
yomikomi.xmlの中で
 <!ENTITY contents SYSTEM "A.xml">
<!--
 <!ENTITY contents SYSTEM "B.xml">
 <!ENTITY contents SYSTEM "C.xml">
-->
※その都度読み込むファイル名を変える。

test.xsl
宣言↓
<!ENTITY A SYSTEM "A.html">
<!ENTITY B SYSTEM "B.html">
<!ENTITY C SYSTEM "C.html">

(同様に100ファイルあります。)

該当箇所↓
<xsl:template match="TEST">
 <xsl:choose>
  <xsl:when test="@ID='A'">
   &A;
  </xsl:when>
  <xsl:when test="@ID='B'">
   &B;
  </xsl:when>
  <xsl:when test="@ID='C'">
   &C;
  </xsl:when>
 </xsl:choose>
</xsl:template>

上記のような実体参照となり、
これなら普通に動作するのですが、
全部で100ファイルほどhtmlがあるので、
それをhonbun.xml中のIDから判定して宣言する方法が無いでしょうか。

イメージ的には
<xsl:template match="TEST">
&{@ID};
</xsl:template>
のような感じで、
TESTタグの持っているID属性をそのまま実体名として参照したいのです。

よろしくお願いいたします。

A 回答 (1件)

文書エンティティを使うより、こういう場合には、


XSL のdocument関数でファイルの読込をするのが簡単です。
<xsl:template match="TEST">
<xsl:copy-of select="document(concat(@ID,'.xml'))" />
</xsl:template>
のように書けます。

どちらかというとこういう場合には
<TEST href="A.xml" />
とかの方が意味を表していて良いように思います。
このようにしておけば、
document(@href)
だけですみますしね。
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!