xsl:寻找类似左联接的东西 [英] xsl: looking for something like left join

查看:96
本文介绍了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 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屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆