内の文字列の既存のシーケンスに文字を挿入する私はこのような構造を持っている:私は各故障の下ですべての信号の値を集めるので、title属性に入れたいXSLT 2.0
<faults>
<fault componentName="comp1">
<introduceWhen>Time1</introduceWhen>
<signals>
<signal name="sig11" value="1"/>
<signal name="sig22" value="1"/>
</signals>
</fault>
<fault componentName="comp2">
<introduceWhen>Time2</introduceWhen>
<signals>
<signal name="sig44" value="0"/>
</signals>
</fault>
</faults>
をその特定の表のセルにカーソルを置くと、障害に関する詳細情報を表示できます。この使用
<td title="comp1 sig11 1 sig22 1 comp2 sig44 0">comp1 1 1 Time1 comp2 0 Time2</td>
::私は、文字列のシーケンスに必要な情報なので、などを取得するために管理している
<xsl:template match="faults">
<xsl:attribute name="title">
<xsl:value-of select="fault/@componentName |
fault/signals/signal/@name |
fault/signals/signal/@value"/>
</xsl:attribute>
<xsl:value-of select="fault/introduceWhen | fault/@componentName |
fault/signals/signal/@value"/>
</xsl:template>
しかし、私が持っているしたいことはあるが、この(

が改行されています) :
<td title="comp1
sig11: 1
sig22: 1
comp2
sig44: 0">comp1 1 1 Time1 comp2 0 Time2</td>
私はreplace($faultDetails, ' (\d) ', ': $1
')
を使用してみましたが、$faultDetails
が実際のに対し置き換えるだけ連続した文字列で動作し、スペースを含まない一連の文字列であることが分かりました。私はこれを書いているので、私はこれでほぼそこに行くことができることを実感します。
<xsl:value-of select="fault/@componentName | fault/signals/signal/@name |
fault/signals/signal/@value" separator="
"/>
どのようにすればいいですか?
ああ、あなたがその方法でコンマを使うことができるかどうかわからなかった、非常に素晴らしい解決策! – Fylke
ああ待って、それはすべての作品を作る文字列にそれらを作る、ないのですか? – Fylke
同じセパレータを持つ一連のノードが必要な場合は、たとえば、 ' 'しかし、信号名と値をコロンで区切りたい場合は、たとえば、 'signals/signal/concat(@name、 ':'、@ value)'シーケンス内の他の項目は明示的に文字列に変換する必要があります。私は間違った場所でそれをやってしまったので、コードスニペットを編集します。 –