【问题标题】:How to pass rgb value coming in soap xml converting it into xsl and pass the rgb value如何传递来自soap xml的rgb值将其转换为xsl并传递rgb值
【发布时间】:2018-10-08 10:27:19
【问题描述】:

在我的肥皂响应 XML 中,我反复获取“选项”父节点。 在父节点内,我有包含一些值的节点“rgb”。我正在使用该数据创建 html。 从父我正在使用描述,当我将该描述放入 td 时,我需要将 td 颜色作为选项节点中的 rgb 值存在

示例 XML

    <?xml version='1.0' encoding='UTF-8'?><S:Envelope xmlns:S="http://schemas.xmlsoap.org/soap/envelope/">
   <S:Body>
      <ToggleOptionResponse xmlns="urn:configcompare4g.kp.chrome.com">
         <status>None</status>
         <originatingChromeOptionCode>SM</originatingChromeOptionCode>
         <originatingOptionAnAddition>true</originatingOptionAnAddition>
         <requiresToggleToResolve>false</requiresToggleToResolve>
         <configuration>

<options>

               <headerName>PRIMARY PAINT</headerName>
               <consumerFriendlyHeaderId>10</consumerFriendlyHeaderId>
               <consumerFriendlyHeaderName>Exterior</consumerFriendlyHeaderName>
               <optionKindId>68</optionKindId>
               <descriptions>
                  <description>Shadow Black</description>
                  <type>PrimaryName</type>
               </descriptions>
               <uniqueTypeFilter>N</uniqueTypeFilter>
               <rgbValue>0A0A0C</rgbValue>

            </options>

<options>

               <headerName>PRIMARY PAINT</headerName>
               <consumerFriendlyHeaderId>10</consumerFriendlyHeaderId>
               <consumerFriendlyHeaderName>Exterior</consumerFriendlyHeaderName>
               <optionKindId>68</optionKindId>
               <descriptions>
                  <description>Ruby Red Metallic Tinted Clearcoat</description>
                  <type>PrimaryName</type>
               </descriptions>
               <rgbValue>570512</rgbValue>

            </options>

       </configuration>
      </ToggleOptionResponse>
   </S:Body>
</S:Envelope>

对应的XSL

 <?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet 
xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:S="http://schemas.xmlsoap.org/soap/envelope/" xmlns:p="urn:configcompare4g.kp.chrome.com" version="1.0"
exclude-result-prefixes="p">

<xsl:template match="/">
  <html>
  <body>
    <h2>My CD Collection</h2>
    <table border="1">

    <xsl:for-each select="//p:ToggleOptionResponse/p:configuration/p:options">
    <tr bgcolor="#9acd32">
    <xsl:for-each select="p:headerName[not(.=preceding::*)]">
        <th><xsl:value-of select="." /></th>
    </xsl:for-each>
  </tr>    
<tr>

      <td><xsl:value-of select="p:consumerFriendlyHeaderName"/></td>

<xsl:if test="p:headerName != 'PRIMARY PAINT'">
 <td><xsl:for-each select="p:descriptions/p:description">
         <xsl:if test="position() > 1 ">, </xsl:if>
         <xsl:value-of select="."/><xsl:text> </xsl:text></xsl:for-each></td>

    </xsl:if>

<xsl:if test="p:headerName = 'PRIMARY PAINT'">
 <td bgcolor ='#<xsl:value-of select="p:rgbValue">'>
<xsl:for-each select="p:descriptions/p:description">
         <xsl:if test="position() > 1 ">, </xsl:if>
         <xsl:value-of select="."/><xsl:text> </xsl:text></xsl:for-each></td>

    </xsl:if>

   </tr>
    </xsl:for-each>


    </table>
  </body>
  </html>
</xsl:template>
</xsl:stylesheet>

我是第一次尝试 xslt,需要输入

提前致谢

【问题讨论】:

    标签: html xml xslt xslt-1.0


    【解决方案1】:

    您需要在这里使用Attribute Value Template....

    而不是这样做......

     <td bgcolor ='#<xsl:value-of select="p:rgbValue">'>
    

    这样做....

     <td bgcolor ='#{p:rgbValue}'>
    

    花括号表示要计算的表达式,然后将其结果放入属性中。

    【讨论】:

      猜你喜欢
      • 2018-01-03
      • 2012-10-29
      • 2011-01-24
      • 2013-05-10
      • 2018-11-06
      • 1970-01-01
      • 1970-01-01
      • 2016-12-17
      • 2019-05-09
      相关资源
      最近更新 更多