<Type><values>
中的某些<attribute>
元素在<comparison><ComparsionList>
中具有關聯的<condition>
元素。我能夠比較對象和標題並獲得輸出,但是當存在依賴於另一個值的條件時,無法輸出所需的輸出。我想要重構,解析xml值並將它們在xsl中進行比較
這裏是我的XML輸入:
<Types xmlns:p="foo">
<Type>
<title> TestingOne</title>
<values>
<attribute name="vala">10</attribute>
<attribute name="valb">20</attribute>
<attribute name="valc">30</attribute>
<attribute name="vald">40</attribute>
</values>
<title> TestingTwo</title>
<values>
<attribute name="vala">10</attribute>
<attribute name="valb">20</attribute>
<attribute name="valc">15</attribute>
<attribute name="vald">45</attribute>
</values>
<title> TestingThree</title>
<values>
<attribute name="vala">78</attribute>
<attribute name="valb">20</attribute>
<attribute name="valc">60</attribute>
<attribute name="vald">42</attribute>
</values>
<title> TestingFour</title>
<values>
<attribute name="vala">1</attribute>
<attribute name="valb">3</attribute>
<attribute name="valc">5</attribute>
<attribute name="vald">7</attribute>
</values>
<title> TestingFive</title>
<values>
<attribute name="vala">2</attribute>
<attribute name="valb">4</attribute>
<attribute name="valc">6</attribute>
<attribute name="vald">8</attribute>
</values>
<title> TestingSix</title>
<values>
<attribute name="vala">2</attribute>
<attribute name="valb">4</attribute>
<attribute name="valc">6</attribute>
<attribute name="vald">8</attribute>
</values>
</Type>
<comparison>
<comparisionList>
<object>TestingOne</object>
<condition>valc=30</condition>
<newName>vald</newName>
<newValue>60</newValue>
</comparisionList>
<comparisionList>
<object>TestingTwo</object>
<condition>valb=40 or valb=20</condition>
<newName>vald</newName>
<newValue>60</newValue>
</comparisionList>
<comparisionList>
<object>TestingThree</object>
<newName>vale</newName>
<newValue>100</newValue>
</comparisionList>
<comparisionList>
<object>TestingFour</object>
<condition>valc!=3</condition>
<newName>vald</newName>
<newValue>9</newValue>
</comparisionList>
</comparisionList>
<comparisionList>
<object>TestingSix</object>
<condition>vala!=vala</condition>
<newName>vald</newName>
<newValue>20</newValue>
</comparisionList>
<comparisionList>
<object>TestingSix</object>
<condition>!valb</condition>
<newName>vald</newName>
<newValue>1000</newValue>
</comparisionList>
</comparison>
</comparison>
</Types>
這裏我的xsl:
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:p="foo" xmlns:ns1="bar">
<xsl:output method="xml" version="1.0" encoding="UTF-8" indent="yes"/>
<xsl:template match="/Types">
<objects>
<xsl:for-each select="/Type">
<xsl:element name="{title}">
<xsl:for-each select="values/attribute">
<xsl:element name="{@name}">
<xsl:value-of select="text()"/>
</xsl:element>
</xsl:for-each>
<xsl:variable name="attributes" select="values/*"/>
<xsl:variable name="newPath" select="/Types/Type/[object=$attributes]"/>
<template>
<xsl:value-of select="$newPath/newName"/>
<xsl:value-of select="$newPath/newValue"/>
</template>
</xsl:element>
</xsl:for-each>
</objects>
</xsl:template>
</xsl:stylesheet>
這裏是預期輸出:
<?xml version="1.0" encoding="UTF-8"?>
<template>
<testingone>
<vala>10</vala>
<valb>20</valb>
<valc>30</valc>
<vald>60</vald>
</testingone>
<testingTwo>
<vala>10</vala>
<valb>20</valb>
<valc>15</valc>
<vald>60</vald>
</testingTwo>
<testingThree>
<vala>78</vala>
<valb>20</valb>
<valc>60</valc>
<vald>100</vald>
</testingThree>
</template>
輸入數據和xsl不是有效的xml。您的選擇器p:objectSet/p:objects/p:object在輸入文檔中不存在。 – terrywb 2014-09-23 18:33:36
你真的在問如何評估'valb = 40或valb = 20'這樣的字符串,如'condition'元素所示? – 2014-09-23 19:21:22
這是正確的TIM,並將它們與在 –
user4071541
2014-09-23 19:39:37