如何:创建隐藏动态ID的输入的XSL模板

时间:2013-01-10 07:42:46

标签: javascript xslt dom

我有这个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>

我回到服务器的只是没有密钥名称的最后一个查询。它以某种方式进入一个名为Description(textarea元素)的不同输入,它在上面的apply-templates之前写在xsl中: 服务器输入:...,描述= [^ CX]。*,... 我甚至在我的UI中看到,当加载页面时,查询位于描述文本区域内。我的代码中似乎有什么问题?

1 个答案:

答案 0 :(得分:1)

您无法将脚本标记放入<xsl:attribute>

肯定无法在XSLT中执行或访问JavaScript - 为什么你认为这是可能的?

尝试这样的事情。

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

了解