我有在文字部分HTML和自定义的标签的XML,XML片断如下 -保留标签
<Text>
<English>
<p>Some text goes here with html tags like
<span class='classname'>more text</span> and
custom tags <CustomTag uid='value'>and
text</CustomTag></p>
</English>
</Text>
现在的问题有三个方面 -
- 保留HTML标记文字:孩子
- 流程自定义标签文本::孩子
- Expedition在输出字符串双引号
使用的XSL片段是这样的 -
这就是文字::孩子(英语或其他方式)是用来
<xsl:variable name='stepText'><xsl:apply-templates select='Text/child::*[name() = $language]'/></xsl:variable>
<!-- This is the problem statement -->
<xsl:variable name='stepTextNew'><xsl:copy-of select="cs:EscapeDoubleQuotes($stepText)"/></xsl:variable>
jQuery('#stepText').html("<xsl:copy-of select='$stepTextNew'/>");
上面的代码片段在XSL逃脱双引号调用C#方法EscapeDoubleQuotes来自apply-templates返回的字符串。
这是Text ::孩子中的自定义标签 -
<xsl:template match="CustomTag">
<xsl:element name="a">
<xsl:attribute name="href">javascript:doSomething(1, '<xsl:value-of select="@uid"/>');</xsl:attribute>
<xsl:attribute name="onmouseover">javascript:onHover(1, '<xsl:value-of select="@uid"/>', true);</xsl:attribute>
<xsl:attribute name="onmouseout">javascript:onLeave(1, '<xsl:value-of select="@uid"/>', false);</xsl:attribute>
</xsl:element>
</xsl:template>
这是Text ::孩子中的HTML标签 -
<xsl:template match="p | span">
<xsl:copy>
<xsl:copy-of select="@*"/>
<xsl:apply-templates select="node()"/>
</xsl:copy>
</xsl:template>
现在,我面临的问题是传递给cs:EscapeDoubleQuotes的字符串中的标签会自动剥离。如果我尝试直接输出stepText,它确实包含标签,但stepTextNew不包含。我尝试调试到C#方法,并看到标签在输入参数本身中被剥离。
如果有人能够解释这个问题或提供解决上述三个问题的任何提示,这将会非常有帮助。
张贴的所有代码是XML(未HTML)。 XML中的属性格式为name =“value”(或单引号)。一个属性有一个名称和一个VALUE。该值是c#中的字符串对象,因此您不需要在字符串对象内使用双引号。 – jdweng
@jdweng请在回复前仔细阅读整篇文章。您的评论没有解决上述问题。如果您需要更多信息来了解问题陈述,请询问。 –
为什么你认为你需要XSLT,C#和JQuery的混合?你能向我们展示你想为你发布的输入片段创建的HTML结果吗?如果您确实希望我们能够使用该C#方法,那么我们需要查看它的实现,以及您使用哪种XSLT处理器的精确描述。 –