如何在一个XSL文件中使用多个XML文件的数据?

snaill 2001-11-08 05:21:00
加精
...全文
160 9 打赏 收藏 举报
写回复
9 条回复
切换为时间正序
当前发帖距今超过3年,不再开放新的回复
发表回复
harmfulbug 2001-11-12
karma這個例子不就是用ns做的麼?:)
  • 打赏
  • 举报
回复
karma 2001-11-09
sure, you can use multiple namespaces in xml/xslt
  • 打赏
  • 举报
回复
snaill 2001-11-09
to karma(无为):
多谢这个方法不错.
TO harmfulbug(飛翔的天堂鳥):
NS怎么用有没有例子?
  • 打赏
  • 举报
回复
harmfulbug 2001-11-09
schema中利用ns可以使用多個xml,xsl中利用ns不行嗎?
  • 打赏
  • 举报
回复
karma 2001-11-09
here is an example:
1. directory.xml
<?xml-stylesheet type="text/xsl" href="directory.xsl" ?>
<DIRECTORY name="root">
<FILE name="file1.txt"/>
<FILE name="subdir1" path="subdir1.xml"/>
<FILE name="subdir2" path="subdir2.xml"/>
</DIRECTORY>

2. subdir1.xml:
<DIRECTORY name="subdir1">
<FILE name="file2.txt"/>
<FILE name="file3.txt"/>
<FILE name="file4.txt"/>
</DIRECTORY>

3. subdir2.xml:
<DIRECTORY name="subdir2">
<FILE name="file5.txt"/>
<FILE name="file6.txt"/>
<FILE name="file7.txt"/>
</DIRECTORY>

4. directory.xsl:
<?xml version="1.0"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:template match="/">
<html>
<body>
<xsl:apply-templates />
</body>
</html>
</xsl:template>

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

<xsl:template match="FILE">
<LI>

<xsl:choose>
<xsl:when test="@path">
<xsl:apply-templates select="document(@path)/DIRECTORY" />
</xsl:when>

<xsl:otherwise>
<xsl:value-of select="@name" />
</xsl:otherwise>
</xsl:choose>

</LI>
</xsl:template>

</xsl:stylesheet>

This is recursive. You can add a few files with "path" attribute in "subdir1.xml" and "subdir2.xml" and extend the directory structure.
  • 打赏
  • 举报
回复
snaill 2001-11-09
thank you!
  • 打赏
  • 举报
回复
karma 2001-11-09
try this:

1. directory.xml:
<?xml-stylesheet type="text/xsl" href="directory.xsl" ?>
<DIRECTORY name="root" xmlns="whatever.com">
<FILE name="file1.txt"/>
<FILE name="subdir1" path="subdir1.xml"/>
<FILE name="subdir2" path="subdir2.xml"/>
</DIRECTORY>

2.subdir1.xml:

<DIRECTORY name="subdir1" xmlns="http://everywhere">
<FILE name="file2.txt"/>
<FILE name="file3.txt"/>
<FILE name="file4.txt"/>
</DIRECTORY>

3.subdir2.xml:
<DIRECTORY name="subdir2" xmlns="donotknowwhere">
<FILE name="file5.txt"/>
<FILE name="file6.txt"/>
<FILE name="file7.txt"/>
</DIRECTORY>

4.directory.xsl:
<?xml version="1.0"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
xmlns:fs1="whatever.com"
xmlns:fs2="http://everywhere"
xmlns:fs3="donotknowwhere"
>
<xsl:template match="/">
<html>
<body>
<xsl:apply-templates />
</body>
</html>
</xsl:template>

<xsl:template match="fs1:DIRECTORY">
<xsl:value-of select="@name" />
<UL>
<xsl:apply-templates select="*" />
</UL>
</xsl:template>

<xsl:template match="fs2:DIRECTORY">
<div style="color:red"><xsl:value-of select="@name" />
<UL>
<xsl:apply-templates select="*" />
</UL>
</div>
</xsl:template>

<xsl:template match="fs3:DIRECTORY">
<div style="color:blue"><xsl:value-of select="@name" />
<UL>
<xsl:apply-templates select="*" />
</UL>
</div>
</xsl:template>

<xsl:template match="*[local-name()='FILE']">
<LI>

<xsl:choose>
<xsl:when test="@path">
<xsl:apply-templates select="document(@path)/*[local-name()='DIRECTORY']" />
</xsl:when>

<xsl:otherwise>
<xsl:value-of select="@name" />
</xsl:otherwise>
</xsl:choose>

</LI>
</xsl:template>

</xsl:stylesheet>
  • 打赏
  • 举报
回复
snaill 2001-11-09
有没有例子?
  • 打赏
  • 举报
回复
karma 2001-11-08
use document()
  • 打赏
  • 举报
回复
相关推荐
发帖
XML/XSL
加入

8870

社区成员

XML/XSL相关问题讨论专区
社区管理员
  • XML/XSL社区
申请成为版主
帖子事件
创建了帖子
2001-11-08 05:21
社区公告
暂无公告