我有这个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中看到,当加载页面时,查询位于描述文本区域内。我的代码中似乎有什么问题?
答案 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>
了解