xsl:寻找类似左联接的东西 [英] xsl: looking for something like left join
本文介绍了xsl:寻找类似左联接的东西的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
嗨
我正在与xpath战斗...我尝试做类似"SQL-JOIN"的操作,但没有成功.我有一个XML文档,其主/从关系为1:1.下面的xsl向我展示了所有母版,但无法访问其详细信息(第三列). N.B:我绝对是xsl和xpath的初学者.
感谢您的帮助
真的,没人知道吗?
<? xml 版本 =" 编码 =" ISO-8859-1" >
< xsl:stylesheet 版本 ="
xmlns:xsl =" >
< xsl:template 匹配 =" < html >
< 正文 >
< 表 =" 1" < tr =" #9acd32" < 第 > 主ID < /th >
< 第 > 主名称< /th >
< 第 > 详细信息< /th >
< /tr >
< xsl:for-each 选择 =" >
< tr >
< td > < xsl:value-of 选择 =" > /td >
< td > < xsl:value-of 选择 =" > /td >
<!- 以下是问题所在... ->
< td > < xsl:value-of 选择 =" > < ; /td >
< /tr >
< /xsl:for-each > 跨度>
< /table >
< /body >
< /html >
< /xsl:template >
< /xsl:stylesheet >
xml示例数据:
<? xml 版本 =" 编码 =" iso-8859-1" 独立 是" >
<? xml样式表 类型 =" href =" >
< 导出 >
< Master >
< MASTER_ID > ID1 < /MASTER_ID >
< MASTER_NAME > 名称1 < /MASTER_NAME >
< /Master >
< Master >
< MASTER_ID > ID2 < /MASTER_ID >
< MASTER_NAME > 名称2 < /MASTER_NAME >
< /Master >
< 详细信息 >
< MASTER_ID > ID1 < /MASTER_ID >
< DETAIL_DATA > 详细信息母版1 < /DETAIL_DATA >
< /Detail >
< /导出 >
<!- Integrity ="57687a72" ->
解决方案
发布数据之后:此方法适用于我.
<? xml 版本 =" 编码 =" utf-8" > < xsl:stylesheet 版本 =" xmlns:xsl http://www.w3.org/1999/XSL/Transform" xmlns:msxsl =" 排除结果前缀 =" > < xsl:output 方法 =" 缩进 是" > < xsl:template 匹配 =" < html > < 正文 > < 表 =" 1" < tr =" #9acd32" < 第 > 主ID < /th > < 第 > 主名称< /th > < 第 > 详细信息< /th > < /tr > < xsl:for-each 选择 =" > < xsl:variable 名称 =" 选择 MASTER_ID " > < tr > < td > < xsl:value-of 选择 =" / > < /td > < td > < xsl:value-of 选择 =" / > < /td > <!- 以下解决了这个问题... -> < td > < xsl:variable 名称 =" 选择 =" > < xsl:choose > < xsl:何时 测试 =" < xsl:value-of 选择 =" <?xml version="1.0" encoding="ISO-8859-1"?> <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"> <xsl:template match="/"> <html> <body> <table border="1"> <tr bgcolor="#9acd32"> <th>Master ID</th> <th>Master Name</th> <th>Detail</th> </tr> <xsl:for-each select="Export/Master"> <tr> <td><xsl:value-of select="MASTER_ID"/></td> <td><xsl:value-of select="MASTER_NAME"/></td> <!--The following is the problem...--> <td><xsl:value-of select="/Export/Detail/DETAIL_DATA[/Export/Detail/MASTER_ID = MASTER_ID]"/></td> </tr> </xsl:for-each> </table> </body> </html> </xsl:template> </xsl:stylesheet>
xml example data:
<?xml version="1.0" encoding="iso-8859-1" standalone="yes"?> <?xml-stylesheet type="text/xsl" href="dcical.XSL"?> <Export> <Master> <MASTER_ID>ID1</MASTER_ID> <MASTER_NAME>Name 1</MASTER_NAME> </Master> <Master> <MASTER_ID>ID2</MASTER_ID> <MASTER_NAME>Name 2</MASTER_NAME> </Master> <Detail> <MASTER_ID>ID1</MASTER_ID> <DETAIL_DATA>Detail of of master 1</DETAIL_DATA> </Detail> </Export> <!-- Integrity= "57687a72" -->解决方案After you posted the data: this works for me.
<?xml version="1.0" encoding="utf-8"?> <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:msxsl="urn:schemas-microsoft-com:xslt" exclude-result-prefixes="msxsl" > <xsl:output method="html" indent="yes"/> <xsl:template match="/Export"> <html> <body> <table border="1"> <tr bgcolor="#9acd32"> <th>Master ID</th> <th>Master Name</th> <th>Detail</th> </tr> <xsl:for-each select="Master"> <xsl:variable name="mid" select="MASTER_ID"/> <tr> <td> <xsl:value-of select="MASTER_ID"/> </td> <td> <xsl:value-of select="MASTER_NAME"/> </td> <!--The following solves the problem...--> <td> <xsl:variable name="data" select="../Detail[MASTER_ID=
mid]/DETAIL_DATA"/> <xsl:choose> <xsl:when test="
data"> <xsl:value-of select="
这篇关于xsl:寻找类似左联接的东西的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文