0

XML:

<root>
 <param name="a">valueOfA</param>
 <param name="b">valueOfB</param>
 <param name="c">valueOfC</param>    
</root>

paramxmlでパラメータノードごとに作成する必要があります。

したがって、期待される結果は次のとおりです。

<xsl:param name="a" select="valueOfA" />
<xsl:param name="b" select="valueOfB" />
<xsl:param name="c" select="valueOfC" />

編集:

間違えました。実際のxsltパラメータが必要なので、後でコードで使用できるようになります。上記で修正。

編集:

XSLT1.0が必要

編集:

主な問題は、xml値からxsl:paramの名前を作成することです。以下は無効です。

<xsl:param name="{@name}" />

または変数。

4

2 に答える 2

0
<xsl:template match="root">
  <xsl:copy>
    <xsl:apply-templates select="param"/>
  </xsl:copy>
</xsl:template>

<xsl:template match="param">
  <param name="{ ./@name }" select="{ string(.) }"></param>
</xsl:template>
于 2013-03-07T17:51:54.733 に答える
0

あなたの編集から、ある XSLT を使用して別の XSLT を作成する方法を探しているようです。名前空間に要素を作成するには、名前空間エイリアス機能を使用xsl:するか、使用する必要があります<xsl:element>

<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0"
     xmlns:xslo="urn:xsl-output" exclude-result-prefixes="xslo">
  <xsl:namespace-alias stylesheet-prefix="xslo" result-prefix="xsl" />

  <xsl:template match="root">
    <xslo:stylesheet version="1.0">
      <xsl:apply-templates select="param" />
    </xslo:stylesheet>
  </xsl:template>

  <xsl:template match="param">
    <xslo:param name="{@name}" select="{.}" />
  </xsl:template>
</xsl:stylesheet>

xslo:スタイルシートでプレフィックスが付けられた要素xsl:は、出力ドキュメント (それ自体が別のスタイルシート) になります。

于 2013-03-08T13:14:59.550 に答える