“里面属性xslt
嗨,我想写一个正则表达式在xslt 里面,但我有一个问题”的迹象。 我关闭了属性。和\“dosnt似乎工作像它在aspx页面“里面属性xslt
这里是我的代码:
<xsl:if test="@text = 'yes'">
<asp:RegularExpressionValidator runat="server" ControlToValidate="{@name}"
ValidationExpression="^[\w '%+*.!=/\\\[\]\{\}\?\,\(\)-]+$"
ErrorMessage=" " Display="Dynamic">
<span class="red_star">*</span>
</asp:RegularExpressionValidator>
</xsl:if>
我怎样才能添加”符号正则表达式? 所以这将是这样的:
ValidationExpression =“^ [。!?\ W“%+ * =/\ [] {} \ \,()\ ” - ] + $“
谢谢你
你需要躲避"
字符"
:
<xsl:if test="@text = 'yes'">
<asp:RegularExpressionValidator runat="server" ControlToValidate="{@name}"
ValidationExpression="^[\w '%+*.!=/\\\[\]\{\}\?\,\(\)\"-]+$"
ErrorMessage=" " Display="Dynamic">
<span class="red_star">*</span>
</asp:RegularExpressionValidator>
</xsl:if>
有5个字符,如果你需要输出的XML需要进行转义:
- " (") - ' (') - < (<) - > (>) - & (&)
是不是'"'? – Kobi 2010-08-17 09:04:50
@kobi,更正 – 2010-08-17 09:08:52
通常不需要转义'>'(仅在CDATA中才有意义)。另外,如果另一个字符不存在于字符串中(另一个字符可以用作字符串分隔符),则可以将其中一个'“或'''作为非转义字符 – 2010-08-17 12:46:43
您应该能够表达“与xml实体&”;
由于您正在生成另一个XML文档(或aspx或HTML,对于这个问题),我相信你需要多一点编码。例如,假设您要attribute
为abc"edf
:
attr="abc"edf"
,如上所示,将使XSL引擎看到文本为attr="abc"edf"
。在这种情况下,XSL是有效的,但生成的文件不是!。
什么,你可能需要在这里:
attr="abc&quot;edf"
这里,XSL引擎看到并产生attr="abc"edf"
- 也就是你想要"
为输出的一部分,而不是输入。
alt text http://yuml.me/3b1e45
(作为一个alernative,你也许可以侥幸逃脱单引号:attr='abc"edf'
- 这不会帮助这里虽然,因为你也有你的字符串中的单引号。 ..)
您的回答有误导性和不真实性。 XSL引擎是如何工作的,正如预期的那样,XSL引擎具有XML感知能力,这意味着当它生成文档时,它首先生成一个XML树,如果需要,它将被序列化为一个XML字符串(通常不是) 因此,首先将XML和XSL文档解析为XML对象,此时将解析属性“attr”的字面值并存储为:abc“edf。然后,该属性值再次逐字地设置为结果文档属性,即,当序列化时产生edf。在任何XSL引擎中尝试一下,看看自己:-) – dionyziz 2010-08-19 12:05:30
@dionyziz - 你是对的,上面的两个答案表明了这一点。然而,我很确定在那里我必须使用'&“或'& amp;' - 我会在星期天检查并更新答案以解释何时适用(禁用输出转义?)。如果我完全错了,我会删除它。别担心':)' – Kobi 2010-08-19 17:37:11
"应该做的工作,但我不知道太多xslt – 2010-08-17 08:55:26