Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Java [игнор отключен] [закрыт для гостей] / XSLT+Xpath Recursion / 5 сообщений из 5, страница 1 из 1
14.09.2007, 12:28:24
    #34800448
iv_va
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
XSLT+Xpath Recursion
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
14.09.2007, 19:10:14
    #34802062
TiG
TiG
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
XSLT+Xpath Recursion
Как-то так:
Код: 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
18.09.2007, 11:02:57
    #34807198
iv_va
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
XSLT+Xpath Recursion
спасибо за ответ
Я попытаюсь разобраться или он работаэт как мне надо Я только начинаю изучать XSLT+Xpath (новичок) Если не тежело посоветовать литературу, URL, форумы

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


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