powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Java [игнор отключен] [закрыт для гостей] / XSLT+Xpath Recursion
5 сообщений из 5, страница 1 из 1
XSLT+Xpath Recursion
    #34800448
iv_va
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Input data : build.xml
*******************************************************************************
<project name="name of project" default="compile" basedir=".">


<target name="all" depends="clean,compile"
description="Clean build and dist directories, then compile"/>

<target name="clean"
description="Delete old build and dist directories">
</target>

<target name="compile" depends="prepare"
description="Compile Java sources">
</target>

<target name="dist" depends="compile,javadoc"
description="Create binary distribution">
</target>

<target name="install" depends="compile"

</target>

<target name="javadoc" depends="compile"
description="Create Javadoc API documentation">


</target>

<target name="list"
</target>

<target name="prepare">
</target>

</project>
*******************************************************************************
Задача стоит следующая :
Нужно построить таблицу зависимостей используя XSLT+XPath

Target Dependencies
----------------------------
clean
----------------------------
list
----------------------------
prepare
----------------------------
all clean
compile
- prepare
----------------------------
compile prepare
----------------------------
dist compile
- prepare
javadoc
- compile
- prepare
----------------------------
install compile
-prepare
----------------------------
javadoc compile
-prepare



Source :

<<< *.xsl >>>

*******
<tr>
<td width="100%">
<table border="1"
class="targetDependencyANT" align="center">
<tr>
<td
style="background-color: olive">
Target
</td>
<td
style="background-color: olive">
Dependencies
</td>
</tr>
<xsl:call-template
name="printEmptyTarget" />


<xsl:call-template
name="printNotEmptyTarget" />


</table>
</td>
</tr>


*******

<xsl:template name="printEmptyTarget">
<xsl:for-each select="project/target[not(@depends)]">
<tr>
<td>
<xsl:value-of select="@name" />
</td>
</tr>
</xsl:for-each>
</xsl:template>


<xsl:template name="printNotEmptyTarget">
<xsl:for-each select="project/target[@depends!='']">
<tr>
<td>
<xsl:value-of select="@name" />
</td>
<td>
<xsl:value-of select="@depends" />

// здесь не получаэться
<xsl:variable name="targetName" select="@name = @depends">
<xsl:value-of select="$targetName" />

</xsl:variable>

</td>
</tr>
</xsl:for-each>

</xsl:template>




*******************************************************************
От рабочий пример факториала

<<< factorial.xml >>>
<?xml version="1.0" encoding="UTF-8"?>
<mathematical>
<factorial>3</factorial>
</mathematical>


<<< factorial.xsl >>>

<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
xmlns:xalan="http://xml.apache.org/xslt">

<xsl:output method="html" />

<xsl:template match="/">
<html>
<head>
<title>Products</title>
</head>
<body>
<table>
<tr>
<td>Value :</td>
<td>
<xsl:value-of
select="mathematical/factorial" />
</td>

</tr>
<tr>
<td>Result :</td>
<td>
<xsl:call-template name="factorial">
<xsl:with-param name="number"
select="mathematical/factorial" />
</xsl:call-template>
</td>
</tr>
</table>
</body>
</html>
</xsl:template>


<xsl:template name="factorial">
<xsl:param name="number" select="1" />
<xsl:choose>
<xsl:when test="$number = 1">
<xsl:value-of select="1" />
</xsl:when>
<xsl:otherwise>
<xsl:variable name="recursive_result">
<xsl:call-template name="factorial">
<xsl:with-param name="number"
select="$number - 1" />
</xsl:call-template>
</xsl:variable>
<xsl:value-of select="$number * $recursive_result" />
</xsl:otherwise>
</xsl:choose>
</xsl:template>

</xsl:stylesheet>



буду очень благодарен за помощь ?
...
Рейтинг: 0 / 0
XSLT+Xpath Recursion
    #34802062
TiG
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Как-то так:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
<?xml version="1.0"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output method="text" encoding="windows-1251"/>

<xsl:template match="/">

<xsl:for-each select="//target">
<xsl:apply-templates select=".">
  <xsl:with-param name="prfx" select="'-'"/>
</xsl:apply-templates>
-----------
</xsl:for-each>

</xsl:template>


<xsl:template match="target">
  <xsl:param name="prfx" />

<xsl:value-of select="$prfx"/><xsl:value-of select="@name"/>(<xsl:value-of select="@depends"/>)
<xsl:call-template name="trcDeps">
  <xsl:with-param name="depList" select="@depends"/>
  <xsl:with-param name="prfx" select="concat($prfx, '-')"/>
</xsl:call-template>

</xsl:template>


<xsl:template name="trcDeps">
  <xsl:param name="depList"/>
  <xsl:param name="prfx" />

  <xsl:if test="$depList">
    <xsl:apply-templates select="//target[@name = substring-before(concat($depList, ','), ',')]">
      <xsl:with-param name="prfx" select="$prfx"/>
    </xsl:apply-templates>

    <xsl:if test="substring-after($depList, ',')">
      <xsl:call-template name="trcDeps">
        <xsl:with-param name="depList" select="substring-after($depList, ',')"/>
        <xsl:with-param name="prfx" select="$prfx"/>
      </xsl:call-template>
    </xsl:if>
  </xsl:if>

</xsl:template>

</xsl:stylesheet>
Но в след.раз рекомендую подобные вопросы задавать в этом форуме
...
Рейтинг: 0 / 0
XSLT+Xpath Recursion
    #34807198
iv_va
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
спасибо за ответ
Я попытаюсь разобраться или он работаэт как мне надо Я только начинаю изучать XSLT+Xpath (новичок) Если не тежело посоветовать литературу, URL, форумы

Например
http://forum.java.sun.com/forum.jspa?forumID=34
Тотже вопрос и ниодного ответа
...
Рейтинг: 0 / 0
XSLT+Xpath Recursion
    #34807493
wessen
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
...
Рейтинг: 0 / 0
XSLT+Xpath Recursion
    #34823715
iv_va
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Всем огромное спасибо Извените не было времени ответить Но уже справился с етой задачай :)
...
Рейтинг: 0 / 0
5 сообщений из 5, страница 1 из 1
Форумы / Java [игнор отключен] [закрыт для гостей] / XSLT+Xpath Recursion
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]