1

ねえ、私は XSLT にかなり慣れていないので、XSLT を使用してフォームを生成および入力することに頭を悩ませようとしています。私は XSLT を作成し、サーバーから XML データを取得できます。すべてのフィールドなどをそれぞれの XML データと正しく一致させたと思います。しかし、格納されている XML データによっては、ラジオ ボタンとチェックボックスをオンにする方法がわかりません。ネット上で同様の投稿をいくつか見つけましたが、それらを正しく機能させることができず、ここの誰かが私に手を貸してくれることを望んでいました.

完全なフォームを台無しにする危険を冒したくなかったので、これを試して動作させるための小さなテストコードをいくつか作成しました。テスト用の XML と XSL を以下に示します。

XML

<?xml version="1.0"?>
<?xml-stylesheet type="text/xsl" href="test2.xsl"?>
<root>
<radiobuttons>
    <radio1>Y</radio1>
    <blurb>blahblahblah</blurb>
</radiobuttons>
</root>

XSL

<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
    <xsl:output method="html" indent="yes" omit-xml-declaration="no"
            encoding="UTF-8"/>
<xsl:template match="/">
<HTML>
<BODY>
<form>
<xsl:apply-templates select="root"/>
</form>
</BODY>
</HTML>
</xsl:template>

<xsl:template match="root">

<input type="radio" name="radio1" value="Y" >
<xsl:if test="root/radiobuttons/radio1='Y'">
<xsl:attribute name="checked">checked</xsl:attribute></xsl:if>
</input>Radio Button 1

<input type="radio" name="radio1" value="N" >
<xsl:if test="root/radiobuttons/radio1='N'">
<xsl:attribute name="checked">checked</xsl:attribute></xsl:if>
</input>Radio Button 2

<br/>
<input name="blurb" type="text" id="blurb" value="{./radiotbuttons/blurb}"></input>
</xsl:template>
</xsl:stylesheet>

XMLにYの値が格納されている場合は結果のHTMLで最初のラジオボタンをチェックし、Nの値を持っている場合は2番目のボタンをチェックしたいと思います。それが完全に間違ったアプローチである場合は、正しい例を教えてください。本当に感謝しています。

4

1 に答える 1

1

xpathでエラーが発生しました

この時点でルートノード内にいるため、「root / radiobuttons / radio1」からroot/を削除する必要があるため、実際にはもう存在しません:P

<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
    <xsl:output method="html" indent="yes" omit-xml-declaration="no"
            encoding="UTF-8"/>
<xsl:template match="/">
<HTML>
<BODY>
<form>
<xsl:apply-templates select="root"/>
</form>
</BODY>
</HTML>
</xsl:template>

<xsl:template match="root">

<input type="radio" name="radio1" value="Y" >
<xsl:if test="radiobuttons/radio1='Y'">
<xsl:attribute name="checked">checked</xsl:attribute></xsl:if>
</input>Radio Button 1

<input type="radio" name="radio1" value="N" >
<xsl:if test="radiobuttons/radio1='N'">
<xsl:attribute name="checked">checked</xsl:attribute></xsl:if>
</input>Radio Button 2

<br/>
<input name="blurb" type="text" id="blurb" value="{./radiobuttons/blurb}"></input>
</xsl:template>
</xsl:stylesheet>
于 2011-10-20T15:51:30.490 に答える