0

私はこのXMLを持っています:

<EditRemote>
   <RemoteVendorServer>
      <FriendlyName><![CDATA[blabla]]></FriendlyName>
      <Description></Description>
      <CommunicationMethod>
         <GetExecutors>
            <Executor queryString=".*"/>
            <Executor queryString="[CX].*"/>
            <Executor queryString="[^CX].*"/>
         </GetExecutors>
         <RemoteAccess/>
      </CommunicationMethod>
   </RemoteVendorServer>
</EditRemote>

「Executor」タグでapplay-templatesを実行し、すべてのqueryStrings値を動的IDを使用して動的に作成された非表示の入力に収集したいと思います。だから私のコードは以下に示されています:

<script type="text/javascript">
     .
     .
    var queryCounter = 0;
    var c_UNDERSCORE_QUERY_STRING = "_queryString";
     .
</script>
     .
     .
<xsl:apply-templates select="EditRemote/RemoteVendorServer/CommunicationMethod/GetExecutors/Executor" mode="tcp"/>
 .
 .
 // at the bottom of the xsl file I create the template:
 <xsl:template match="Executor" mode="tcp">     
    <input value="{@queryString}">
         <xsl:attribute name="id">
            <script type="text/javascript">
                queryCounter + c_UNDERSCORE_QUERY_STRING+"tcp";
            </script>
         </xsl:attribute>
         <xsl:attribute name="name">
            <script type="text/javascript">
                queryCounter + c_UNDERSCORE_QUERY_STRING+"tcp";
            </script>
         </xsl:attribute>
    </input>

    <script type="text/javascript">
        queryCounter++;
    </script>
</xsl:template>

サーバーに戻ったのは、キー名のない最後のクエリだけです。それはどういうわけか、上記のapply-templatesの前にxslに書き込まれるDescription(textarea element)と呼ばれる別の入力に入ります:サーバー入力:...、Description = [^ CX]。*、...私もそれを見ます私のUIでは、ページが読み込まれたときにクエリが説明テキストエリア内にあることがわかります。私のコードの問題は何だと思われますか?

4

1 に答える 1

1

スクリプト タグを に入れることはできません<xsl:attribute>

また、 XSLT 内から JavaScript を実行したりアクセスしたりすることは絶対にできません。なぜこれが可能だと思いますか?

このようなことを試してください。

<xsl:template match="Executor" mode="tcp">   
    <input value="{@queryString}" id="{position()}_queryString_tcp" name="{position()}_queryString_tcp" />
</xsl:template>

について読む

于 2013-01-10T08:01:59.643 に答える