2010-11-22 9 views
2

ショートバージョン:(私がここで何をしようとしているのか分かりません).... XMLから値をフォームフィールドに '出力'したいXSLに...これはエラーをスローXSLで値をレンダリングするフォーム内に

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

...(下記参照)


LONG VERSION: 私はXMLからページをレンダリングXSLページを持っている... Iそのページを閉じるときに「ログ」する必要がある - 私は、Unloadの別のページを呼び出すのが最も簡単な方法だと思った... XSLはonUloadページ呼び出しで値を渡すのいずれかに必要のでedは、ログページに「ID」を渡す:

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

OR - 私は必要な値でフォームを送信

<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のエレメントタイプ "input"に関連付けられた属性 "value"のe値には、 '<'文字を含めることはできません。要求された構成を満たすTransformerオブジェクトを作成することはできません。これは、XSLテキストのコンパイルに失敗したためです。 javax.xml.transform.TransformerConfigurationException:javax.xml.transform.TransformerException:org.xml.sax.SAXParseException:要素タイプ "input"に関連付けられた属性 "value"の値に '<'文字を含めることはできません。

+0

良い質問、+1。説明と2つの可能な解決策については私の答えを見てください。 –

答えて

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

{}は「価値の」のためのXSLTのショートカットであり、あなたが長い形式を使用している場合は、probiblyので、HTMLに出力を設定する必要があります

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

のと同じですINPUTは

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

選択= "//リターン/ ControlNo" />」/>

正しく閉じられていることこれはこれで

問題はXMLで属性値が任意のマークアップ(タグ)を含めることは許されない、と投げエラーがこの違反に対応しているということです...エラーがスローされます。短期および長期:

0.1

はこれを正しく行うには、2つの方法があります。 短い方法。用途:

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

使用{someExpression}属性値内はAVT -- Attribute-Value-Templateと呼ばれています。これにより、someExpressionが評価され、評価結果がこのAVTを置き換えます。

.2。遠くへ。用途:

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

これは、特定の名前や特定の値を持つ属性を作成するXSLT命令<xsl:attribute>を使用する方法の例です。作成された属性は、要素の作成の直後になければなりません(そうしないと、エラーがスローされます)。この属性は、すぐ後に続く要素の属性になります。

+0

あなたはあなたの「長い道」でタイプミスをしていると思います。 –

+0

@ Chris-Bentley:ありがとう、これはコピーとペーストにつながるものです...固定です。 –

関連する問題