"внутренний атрибут в xslt - PullRequest
1 голос
/ 17 августа 2010

привет, я пытаюсь написать регулярное выражение внутри xslt но у меня есть проблема со знаком ". я закрываю атрибут и \ "кажется, работает не так, как он работает на страницах aspx

вот мой код:

<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 '% + *.! = / \ [] {} \? \, () \" -] + $ "

спасибо

Ответы [ 3 ]

3 голосов
/ 17 августа 2010

Вы должны быть в состоянии выразить "с сущностью xml"

3 голосов
/ 17 августа 2010

Вам необходимо экранировать символ " в &quot;:

<xsl:if test="@text = 'yes'">
  <asp:RegularExpressionValidator runat="server" ControlToValidate="{@name}" 
   ValidationExpression="^[\w '%+*.!=/\\\[\]\{\}\?\,\(\)\&quot;-]+$"
   ErrorMessage=" " Display="Dynamic">
      <span class="red_star">*</span>
  </asp:RegularExpressionValidator>
</xsl:if>

Существует 5 символов, которые для экранирования в XML необходимо экранировать:

 - " (&quot;)
 - ' (&apos;)
 - < (&lt;)
 - > (&gt;)
 - & (&amp;)
0 голосов
/ 17 августа 2010

Поскольку вы генерируете другой документ XML (или aspx, или HTML, если на то пошло), я считаю, что вам нужно немного больше кодирования. Например, предположим, что вы хотите, чтобы attribute было abc"edf:

attr="abc&quot;edf", как предлагается, заставит механизм XSL видеть текст как attr="abc"edf". В этом случае XSL действителен, но сгенерированный документ не является! .

Что вам, вероятно, понадобится здесь:

attr="abc&amp;quot;edf"

Здесь механизм XSL видит и генерирует attr="abc&quot;edf" - то есть вы хотите, чтобы &quot; был частью вывода , а не входом.


альтернативный текст http://yuml.me/3b1e45

(Как предупреждение, вы можете сойтись с одинарными кавычками: attr='abc&quot;edf' - здесь это не поможет, потому что в вашей строке также есть одиночная кавычка ...)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...