在Oracle BI Publisher 11g中检查XML中的值

时间:2014-09-05 02:30:25

标签: xml oracle xslt bi-publisher

下面是我的xml示例。这就是我想要的东西

  1. 遍布所有车辆
  2. 如果汽车具有“运动”风格,则显示它们,否则,忽略它
  3. 所以在下面的例子中,我将展示法拉利和2个敞篷车和运动的值

    我有<for-each>Car</end-for-each>。我想检查汽车是否具有“运动”风格。我怎么做?我必须在<for-each>Style</end-for-each>内有另一个<for-each>Car</end-for-each>吗?如果我找到了一种运动风格,那么我正在初始化一个变量并将其分配为

    <?xdoxslt:set_variable($_XDOCTX, ’car’, 1)?> --- initialize to 1 if Sport style found
    <?xdoxslt:get_variable($_XDOCTX, ’car’)?> --- retrieve
    
    <Car>
    <Brand>Honda</Brand>
    <Style>Coupe</Style>
    <Style>Sedan</Style>
    </Car>
    <Car>
    <Brand>Ferrari</Brand>
    <Style>Convertible</Style>
    <Style>Sport</Style>
    </Car>
    

1 个答案:

答案 0 :(得分:0)

  

这就是我想要的东西

     
      
  1. 遍布所有车辆
  2.   
  3. 如果汽车具有“运动”风格,则显示它们,否则,忽略它
  4.   

通常,在XSLT中,您会将此问题解决为:

  1. 选择所有具有“运动”风格的车辆;
  2. 显示它们。
  3. 例如:

    <xsl:for-each select="Car[Style='Sport']">
        <!-- whatever "display" means -->
    </xsl:for-each>
    

    或者,如果“display”是所有节点的默认值(例如,如果您正在应用身份转换模板),您可以应用一个空模板,匹配所有不<的车辆/ strong>有一种“运动”风格,以压制它们。