1

さて、XML タグを介して入力属性を動的に設定できるようにしようとしています。例えば:

<text name='text_name' value='text_value'>text_display</text>

foreach を実行して、名前、値、またはその他の属性を<text>HTML 入力の属性として挿入し、その値を<text>ラベル/プレースホルダーとして使用したいと考えています。

<xsl:for-each select="text">
    <label><xsl:value-of select="." /></label>
    <input type='textfield' placeholder='{.}' />
</xsl:for-each>

今、私は使用できることを知っています:

<xsl:for-each select="@*"> 

しかし、それを入力タグに挿入する方法がわかりません。

アドバイスをよろしくお願いします。

4

1 に答える 1

2

ステートメントを増やしたり減らしたりして、 (プル中心ではなく) プッシュ中心の XSLTを試してみてください。apply-templatesfor-each

要素またはその属性の定義が同じテンプレートになければならないということは何もありません。したがって、要素のテンプレートを作成するときは、要素とすべての属性を<text>作成するだけです。<input>apply-templates

<xsl:template match="text">
 <input>
  <xsl:apply-templates select="@*"/>
  <label><xsl:value-of select="." /></label>
 </input>
</xsl:template>

第二に、あなたがやろうとしているのは、文字通り属性を新しいドキュメントにコピーすることですcopy.

<xsl:template match="text/@*">
  <xsl:copy/>
</xsl:template>

それで、ここに完全なスタイルシートがあります...

<?xml version="1.0" encoding="ISO-8859-1"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">

<xsl:template match="/texts">
 <xsl:apply-templates />
</xsl:template>

<xsl:template match="text">
 <input>
  <xsl:apply-templates select="@*"/>
  <label><xsl:value-of select="." /></label>
 </input>
</xsl:template>

<xsl:template match="text/@*">
  <xsl:copy/>
</xsl:template>

</xsl:stylesheet>

... この入力 XML ドキュメントに適用すると...

<texts>
  <text name='text_name' value='text_value'>text_display</text>
  <text name='text_name2' value='text_value2'>other_display</text>
</texts>

... この結果は XML になります

<input name="text_name" value="text_value">
    <label>text_display</label>
</input>
<input name="text_name2" value="text_value2">
    <label>other_display</label>
</input>
于 2013-11-07T02:59:41.283 に答える