1

属性を取得し、それを URL の一部として php $_GET 変数に送信する XSLT があります。次のようになります。

<xsl:attribute name="href">search.php?subject="<xsl:value-of select="@level1"/>"</xsl:attribute> 

@level1 のほとんどの値で機能します。たとえば、値が の場合、次のfooURL を取得します。

search.php?subject="foo"

問題は、その値に@level1引用符が含まれている場合、"bar" etc etc機能しないことです。私はこれを得る:

search.php?subject=""bar" etc etc"

もちろん、空の を返しますsubject。バックスラッシュを追加すると、突然機能します。たとえば、URL を編集して読み取ると、次のようになります。

search.php?subject="\"bar\" etc etc" 

それから$_GET['subject]=="bar" etc etc!では、XSL にバックスラッシュを追加して、これらの不正な引用符を回避するにはどうすればよいでしょうか? 私は試した

<xsl:attribute name="href">search.php?subject="<xsl:value-of select='replace(@level1,",\")'/>"</xsl:attribute> 

そして私は試しました

<xsl:attribute name="href">search.php?subject="<xsl:value-of select="replace(@level1,&quot;,\&quot;"/>"</xsl:attribute>

しかし、まだ何も機能していないようです。

4

1 に答える 1

2

XSLT 2.0では、関数を使用しreplace()ます。

XSLT 1.0では、 http://www.exslt.orgにある再帰exslt:replaceテンプレートを使用します。

(いずれにせよ、XSLT について質問する場合は、使用しているバージョンを教えてください)。

于 2013-06-09T05:07:25.110 に答える