Пути выборки

Alexandre

PHPПенсионер
Пути выборки

Что-то я запутался в путях или чего-то я не уловил в XPath.

есть xml
PHP:
<root>
<operatop name="Вася"><group name="A"><count>12</count></operatop>
<operatop name="Вася"><group name="B"><count>31</count></operatop>
<operatop name="Петя"><group name="A"><count>1</count></operatop>
<operatop name="Петя"><group name="B"><count>12</count></operatop>
<operatops>Вася</operatops>
<operatops >Петя></operatops>
</root>

Если я делаю
PHP:
 <xsl:for-each select="root/operators">
   <td><xsl:value-of select="."/></td>

    <xsl:applay-templates select ="/root/operaror[ @name= curent()]   "    / >
 // а вот теперь мне надо применить шаблон только к тем операторам для всех узлов пути выборки /root/operaror, которые имеют текущее значение узла.
</xsl:for-each>
Вопрос: значение @name - относится к пути /root/operaror/@name или к текущему узлу.

т.е. надо применить в цикле <xsl:applay-templates>
к текущему узлу, т.е. имени оператора Вася, Петя и тд
 

Alexandre

PHPПенсионер
я делаб так:
PHP:
<xsl:for-each select="root/operators">
<xsl:sort select="." />
<tr  bgcolor="#ffffff" class="description">
  <td align="center"><xsl:value-of select="."/></td>

  		<xsl:call-template name="count" > 
  		  <xsl:with-param name="opname"><xsl:value-of select="."/></xsl:with-param>
  		</xsl:call-template> 
    
</tr>  
</xsl:for-each>


<xsl:template  name="count"> 
	<xsl:param name="opname" />
	<xsl:for-each select="//root/operator" >
		<td align="center">  
		<xsl:value-of select="$opname" /><br/>
		<xsl:value-of select="@opname" /><br/>
		<xsl:if test ="@opname = $opname/text()" >***</xsl:if>
		
		</td> 

	</xsl:for-each>
</xsl:template>
Мне выдает:
Код:
<td>
Вася
Вася
<td>

Но
PHP:
<xsl:if test ="@opname = $opname/text()" >***</xsl:if>
не срабатывает, т.е *** не выводятся, хотя @opname = $opname

Почему??

или почему??
PHP:
<xsl:template  name="count"> 
	<xsl:param name="opname" />
	<xsl:for-each select="//root/row[@opname = $opname]" >
		<td align="center">  
			<xsl:value-of select="$opname" /><br/>
		   <xsl:value-of select="@opname" /><br/>
		<xsl:if test="$opname = 'BEELINE'"><br/>####</xsl:if>
		
		</td> 

	</xsl:for-each>
</xsl:template>
выдает пустое множество узлов, хотя есть $opname = @opname
 

slach

Новичок
ты кстати для примера хотя бы валидный оператор приводил...
??
опечатка на опечатке...

OPERAROR
вместо OPERATOR ;)
applay
вместо apply

если у тебя так весь XML и XSLT написан =) врятли тут можно чем то помочь =)

у меня вот такой код нормально работает

PHP:
<root>
    <operator name="Вася"><group name="A"><count>12</count></group></operator>
    <operator name="Вася"><group name="B"><count>31</count></group></operator>
    <operator name="Петя"><group name="A"><count>1</count></group></operator>
    <operator name="Петя"><group name="B"><count>12</count></group></operator>

        <operators>Вася</operators>
        <operators>Петя</operators>
</root>
PHP:
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output encoding="windows-1251" method="html" indent="yes"/>

<xsl:template match="/">
<xsl:for-each select="/root/operators">
   operators=<xsl:value-of select="text()"/><br/>
   <xsl:apply-templates select="/root/operator[@name = current()]" mode="view"/>

</xsl:for-each>
</xsl:template>

<xsl:template match="/root/operator" mode="view">
    operator/@name=<xsl:value-of select="@name"/>
    operator/group/@name==<xsl:value-of select="group/@name"/>
    operator/group/count==<xsl:value-of select="group/count"/>
</xsl:template>

</xsl:stylesheet>
 
Сверху