xml
  • xslt
  • 2010-11-22 3 views 2 likes 
    2

    КРАТКАЯ ВЕРСИЯ: (надеюсь, вы можете «увидеть» то, что я пытаюсь сделать здесь). Я хочу «вывести» значение из XML в поле формы в XSL ...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: Th e значение атрибута «значение», связанное с типом «input», не должно содержать символ «<». Невозможно создать объект Transformer, который удовлетворяет запрошенной конфигурации. Это может быть связано с сбоем в компиляции текста XSL. javax.xml.transform.TransformerConfigurationException: javax.xml.transform.TransformerException: org.xml.sax.SAXParseException: значение атрибута «значение», связанное с типом элемента «input», не должно содержать символ «<».

    +0

    Хороший вопрос, +1. См. Мой ответ для объяснения и двух возможных решений. –

    ответ

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

    {} является XSLT Ярлык для «стоимость из» и является эквивалентом

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

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

    2
    <input type="text" value='<xsl:value-of 
    

    выберите = "// возвращение/ControlNo" />»/>

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

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

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

    0,1. Short way. Использование:

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

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

    .2.Long way. Использование:

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

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

    +0

    Я думаю, что у вас есть опечатка в вашем «Длинном пути» .. ее будет вызывать ошибку, как есть. –

    +0

    @ Крис-Бентли: Спасибо, это то, что копирует и вставляет приводит ... Исправлено. –

    Смежные вопросы