xslt a přesun kontextu poduzlu pro pojmenovanou šablonu rubrika: Programování: Jiné

2 Andreaw Fean
položil/-a 4.1.2020

Ahoj.

Mám pro ilustraci tato data:

<items>
  <node>
    <name>Pavel</name>
    <surname>Dee</surname>
  </node>
  <node>
    <name>Petr</name>
    <surname>Xee</surname>
  </node>
  <node>
    <city>Prague</city>
    <zip>10000</zip>
  </node>
</items>

A něčím takovým to zpracovávám:

<xsl:for-each select="node[$offsetRow]">
  <xsl:call-template name="person">
    <xsl:with-param name="counter" select="$counter" />
  </xsl:call-template>
</xsl:for-each>
 
 
<xsl:for-each select="node[$offsetRow]">
  <xsl:call-template name="address">
    <xsl:with-param name="counter" select="$counter" />
  </xsl:call-template>
</xsl:for-each>
 
 
<xsl:template name="person">
  <xsl:param name="counter"/>
item: <xsl:value-of select="$counter"/>
  name: <xsl:value-of select="name"/>
  surname: <xsl:value-of select="surname"/>
</xsl:template>
 
 
<xsl:template name="address">
  <xsl:param name="counter"/>
item: <xsl:value-of select="$counter"/>
  city: <xsl:value-of select="city"/>
  zip: <xsl:value-of select="zip"/>
</xsl:template>

A chtěl bych se zbavit toho for-each, který zneužívám na to, abych té šabloně předal poduzel. Přijde mi to ošklivé, a určitě musí existovat lepší způsob. Něco jako:

  <xsl:call-template name="person" select="node[$offsetRow]">
    <xsl:with-param name="counter" select="$counter" />
  </xsl:call-template>

Poradíte?

odkaz
12 Kit
odpověděl/-a 4.1.2020

Použij <xsl:apply-templates/>

Komentáře

  • Andreaw Fean : Hmm, koukám, že jsem uvedl špatný příklad. [xsl:apply-templates/] nechci použít, protože chci určit konkrétní šablonu. Mám víc šablon pro stejně pojmenované nody, takže se nemohu orientovat podle nich. 4.1.2020
  • Kit : To je takový problém použít atribut mode? Používám ho docela často, i když nemusím. 4.1.2020
  • Andreaw Fean : A jó, to by se na to dalo zneužít. Supr, díky. 4.1.2020

Pro plný přístup na Devel.cz se prosím přihlaste:

Rychlé přihlášení přes sociální sítě:

Nebo se přihlaste jménem a heslem:

Zadejte prosím svou e-mailovou adresu.
Zadejte své heslo.