XSL рендеринг значения ВНУТРИ формы - PullRequest
2 голосов
/ 22 ноября 2010

КРАТКАЯ ВЕРСИЯ: (надеюсь, вы можете «увидеть», что я пытаюсь здесь сделать)…. Я хочу «вывести» значение из XML в поле формы в XSL ...

<input type="text" value='<xsl:value-of select="//return/ControlNo"/>' />  

это выдает ошибку ... (см. Ниже)


ПРОДОЛЖИТЕЛЬНАЯ ВЕРСИЯ: У меня есть страница XSL, отображающая страницу из XML ... Мне нужно «войти»когда они «закрывают» эту страницу - я думал, что вызов отдельной страницы onUnload будет самым простым способом ... ОДНАКО - мне нужно передать «ID» на страницу регистрации, так что XSL должен ЛЮБОЙ передать значение в onUloadвызов страницы:

<BODY onUnload('logit.htm?ID= ...xsl:value-of...','logitwindow'); &gt;

ИЛИ - я отправляю форму со значением, необходимым

<BODY onUnload(document.form.submit); >
<form><input type="hidden" name="id" value=" ...xsl:value-of... "></form>

Надеюсь, это имеет смысл .. спасибо

ошибка... javax.xml.transform.TransformerConfigurationException: javax.xml.transform.TransformerException: org.xml.sax.SAXParseException: значение атрибута «value», связанного с типом элемента «input», не должно содержать символ «<»,Невозможно создать объект Transformer, который удовлетворяет запрошенной конфигурации.Это может быть связано с ошибкой компиляции текста XSL.javax.xml.transform.TransformerConfigurationException: javax.xml.transform.TransformerException: org.xml.sax.SAXParseException: значение атрибута «value», связанного с типом элемента «input», не должно содержать символ «<».</p>

Ответы [ 2 ]

2 голосов
/ 22 ноября 2010
<input type="text" value='<xsl:value-of

select = "// return / ControlNo" /> '/>

это выдает ошибку ...

Проблема в том, что в XML значение атрибута не может содержать никакой разметки (тегов), и выдается ошибка в ответ на это нарушение.

Есть два способа сделать это правильно: короткий и длинный :

0,1. Короткий путь . Использование:

<input type="text" value="{//return/ControlNo}"/>

Использование {someExpression} внутри значения атрибута называется AVT - Attribute-Value-Template . Это вызывает оценку someExpression и результат оценки заменяет этот AVT.

0,2. Долгий путь . Использование:

<input type="text">
  <xsl:attribute name="value">
    <xsl:value-of select="//return/ControlNo"/>
  </xsl:attribute>
</input>

Это пример использования инструкции XSLT <xsl:attribute> для создания атрибута с определенным именем и конкретным значением. Созданный атрибут должен сразу следовать за созданием элемента (в противном случае будет выдана ошибка). Этот атрибут станет атрибутом элемента, которому он следует немедленно.

2 голосов
/ 22 ноября 2010
<input type="text" value="{//return/ControlNo}" /> 

{} является ярлыком xslt для «value-of» и эквивалентно

<input type="text">
   <xsl:attribute name="value">
      <xsl:value-of select="//return/ControlNo" />
   </xsl:attribute>
</input>

Если вы используете длинную форму, вам, вероятно, придется установить вывод в HTMLчтобы вход был правильно закрыт

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