Помогите с шаблоном кто может.

rudik

Developer
Помогите с шаблоном кто может.

Есть шаблон :
<xsl:template match="function">
<xsl:value-of select="@value"/> :
<xsl:apply-templates select="@name"/>
</xsl:template>

<xsl:template match="@*">
<xsl:value-of select="."/>
</xsl:template>

XML:
<function name="sup_pol" value="Полотно" />
<sup_pol>глухое с вырезами под петли и замок. С установленным замком ABLOY 2014</sup_pol>

Как заставить конструкцию <xsl:value-of select="."/> во втором темплейте выдавать
содержимое элемента <sup_pol>, а не его название как сейчас делает парсер.
 

Sababa

Guest
я бы так сделал:

PHP:
<xsl:template match="function">
	<xsl:value-of select="@value"/> :
	<xsl:apply-templates select="w:*[local-name() = local-name(@name)] "/>
</xsl:template>
	
<xsl:template match="w:*">
	<xsl:value-of select="."/>
</xsl:template>
xml:
PHP:
<function name="sup_pol" value="Полотно"/>
<w:sup_pol>глухое с вырезами под петли и замок. С установленным замком ABLOY 2014</w:sup_pol>
 

IchPokhudezh

Guest
Попробуйте
<xsl:value-of select="../../* [local-name() = string( current())]"/>

Если можно менять структуру исходных документов, я бы воспользовался перекрестными ссылками (id/refid) и xsl:key.
 

jian

Guest
na zamok.xml
<?xml version="1.0" encoding="UTF-8" ?>
<?xml-stylesheet type="text/xsl" href="zamok.xsl" ?>
<root>
<function name="sup_pol" value="plotno" />
<sup_pol>gluhoe...</sup_pol>
</root>

zamok.xsl
<?xml version="1.0" encoding="UTF-8" ?>
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0">
<xsl:eek:utput method="html" version="4.01" encoding="UTF-8"/>

<xsl:template match="/">
<xsl:apply-templates select="root/function"/>
</xsl:template>

<xsl:template match="function">
<xsl:value-of select="@value"/> :
<xsl:apply-templates select="@name"/>
</xsl:template>

<xsl:template match="@*">
<xsl:value-of select="//sup_pol"/>
</xsl:template>
</xsl:stylesheet>

dayot zamok.html:
plotno : gluhoe...

no eto ne krasivo...
ya bi napisal zamok.xsl kak:

<?xml version="1.0" encoding="UTF-8" ?>
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0">
<xsl:eek:utput method="html" version="4.01" encoding="UTF-8"/>

<xsl:template match="/">
<xsl:value-of select="root/function/@value"/>:
<xsl:value-of select="root/sup_pol"/>
</xsl:template>

</xsl:stylesheet>
 

jian

Guest
hot i ne ktasivo, no mojno eshe podrugomu:

<xsl:template match="@*">
<xsl:value-of select="../following-sibling::sup_pol"/>
</xsl:template>
 
Сверху