xslt-1.0 相关问题

将此标记用于特定于XSL转换版本1.0的问题,而不是其他版本。

需要识别重复的 Xpath 值,然后只打印一次

我的 XML 输出如下所示: 吉姆 1 ...

回答 1 投票 0

XSLT1.0 使用 < > 和 CDATA

我得到以下格式的 XML: <客户端 id="IP2633100"> XXX1501076 我得到以下格式的 XML: <result> &lt;client id="IP2633100"&gt; &lt;quoteback name="CASE_ID"&gt;XXX1501076&lt;/quoteback&gt; &lt;/client&gt; &lt;order_dataset&gt; &lt;subjects&gt; &lt;subject id="S1"&gt; &lt;name type="primary"&gt; &lt;first&gt;TEST&lt;/first&gt; &lt;middle&gt;&lt;/middle&gt; &lt;last&gt;TESTING&lt;/last&gt; &lt;suffix&gt;&lt;/suffix&gt; &lt;/name&gt; &lt;birthdate&gt;12/12/1948&lt;/birthdate&gt; &lt;address type="mailing" ref="A2"/&gt; &lt;address type="risk" ref="A1"/&gt; &lt;/subject&gt; &lt;/subjects&gt; &lt;addresses&gt; &lt;address id="A1"&gt; &lt;street1&gt;TEST&lt;/street1&gt; &lt;apartment&gt;&lt;/apartment&gt; &lt;city&gt;LAKE WORTH&lt;/city&gt; &lt;state&gt;FL&lt;/state&gt; &lt;postalcode&gt;33467&lt;/postalcode&gt; &lt;/address&gt; &lt;address id="A2"&gt; &lt;street1&gt;TEST&lt;/street1&gt; &lt;apartment&gt;&lt;/apartment&gt; &lt;city&gt;LAKE WORTH&lt;/city&gt; &lt;state&gt;FL&lt;/state&gt; &lt;postalcode&gt;33467&lt;/postalcode&gt; &lt;/address&gt; &lt;/addresses&gt; &lt;/order_dataset&gt; &lt;product_results&gt; &lt;personal_property subject="TEST TESTING"&gt; &lt;report format="CP XML"&gt;&lt;![CDATA[&lt;?xml version="1.0" encoding="UTF-8" standalone="yes"?&gt; &lt;personal_property xmlns="http://cp.com/rules/client"&gt; &lt;admin&gt; &lt;quoteback name="CASE_ID"&gt;XXX1501076&lt;/quoteback&gt; &lt;/admin&gt; &lt;report&gt; &lt;summary&gt; &lt;total&gt;0&lt;/total&gt; &lt;subject&gt;0&lt;/subject&gt; &lt;/summary&gt; &lt;search_dataset&gt; &lt;subject id="S1" unit_number="1" classification="Report"&gt; &lt;name&gt; &lt;first&gt;TEST&lt;/first&gt; &lt;last&gt;TESTING&lt;/last&gt; &lt;/name&gt; &lt;birthdate&gt;12/12/1948&lt;/birthdate&gt; &lt;/subject&gt; &lt;address type="risk" id="A1"&gt; &lt;house&gt;00&lt;/house&gt; &lt;street1&gt;TEST&lt;/street1&gt; &lt;city&gt;LAKE WORTH&lt;/city&gt; &lt;state&gt;FL&lt;/state&gt; &lt;postalcode&gt;33467&lt;/postalcode&gt; &lt;zip4&gt;3818&lt;/zip4&gt; &lt;/address&gt; &lt;/search_dataset&gt; &lt;/report&gt; &lt;/personal_property&gt; ]]&gt;&lt;/report&gt; &lt;/personal_property&gt; &lt;/product_results&gt; </result> 我只能使用XSLT1.0 来转换这个数据。有没有办法将其转换为如下所示: 用替换&lt;和< and >&gt; 删除 CDATA、xml version 和 xmlns 行,但保留其下方节点的值。 这是预期的输出: <result> <client id="IP2633100"> <quoteback name="CASE_ID">XXX1501076</quoteback> </client> <order_dataset> <subjects> <subject id="S1"> <name type="primary"> <first>TEST</first> <middle></middle> <last>TESTING</last> <suffix></suffix> </name> <birthdate>12/12/1948</birthdate> <address type="mailing" ref="A2"/> <address type="risk" ref="A1"/> </subject> </subjects> <addresses> <address id="A1"> <street1>TEST</street1> <apartment></apartment> <city>LAKE WORTH</city> <state>FL</state> <postalcode>33467</postalcode> </address> <address id="A2"> <street1>TEST</street1> <apartment></apartment> <city>LAKE WORTH</city> <state>FL</state> <postalcode>33467</postalcode> </address> </addresses> </order_dataset> <product_results> <personal_property subject="TEST TESTING"> <report format="CP XML"> <personal_property> <admin> <quoteback name="CASE_ID">XXX1501076</quoteback> </admin> <report> <summary> <total>0</total> <subject>0</subject> </summary> <search_dataset> <subject id="S1" unit_number="1" classification="Report"> <name> <first>TEST</first> <last>TESTING</last> </name> <birthdate>12/12/1948</birthdate> </subject> <address type="risk" id="A1"> <house>00</house> <street1>TEST</street1> <city>LAKE WORTH</city> <state>FL</state> <postalcode>33467</postalcode> <zip4>3818</zip4> </address> </search_dataset> </report> </personal_property> </report> </personal_property> </product_results> </result> 我试过这个 XSL 转换: <xsl:transform version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"> <xsl:template match="result" name="firstPass"> <xsl:value-of select="." disable-output-escaping="yes"/> </xsl:template> <xsl:variable name="firstPassOutput"> <xsl:call-template name="firstPass"/> </xsl:variable> <xsl:template name="extractCDATA"> <personal_property> <xsl:value-of select="substring-before(substring-after(., '&lt;personal_property xmlns=&quot;http://cp.com/rules/client&quot;>'), '&lt;/personal_property>')"/> </personal_property> </xsl:template> <xsl:variable name="cdataNodes"> <xsl:call-template name="extractCDATA"/> </xsl:variable> <xsl:template match="/"> <xsl:copy> <xsl:value-of select="$firstPassOutput" disable-output-escaping="yes"/> <xsl:value-of select="$cdataNodes" disable-output-escaping="yes"/> </xsl:copy> </xsl:template> </xsl:transform> 它实现了第一部分,但我需要找到一种方法来摆脱下一行中的 CDATA 和 xml 版本和 xmlns,但保留节点。这是我的 XSL 转换输出: <?xml version="1.0" encoding="UTF-8"?> <client id="IP2633100"> <quoteback name="CASE_ID">XXX1501076</quoteback> </client> <order_dataset> <subjects> <subject id="S1"> <name type="primary"> <first>TEST</first> <middle></middle> <last>TESTING</last> <suffix></suffix> </name> <birthdate>12/12/1948</birthdate> <address type="mailing" ref="A2"/> <address type="risk" ref="A1"/> </subject> </subjects> <addresses> <address id="A1"> <street1>TEST</street1> <apartment></apartment> <city>LAKE WORTH</city> <state>FL</state> <postalcode>33467</postalcode> </address> <address id="A2"> <street1>TEST</street1> <apartment></apartment> <city>LAKE WORTH</city> <state>FL</state> <postalcode>33467</postalcode> </address> </addresses> </order_dataset> <product_results> <personal_property subject="TEST TESTING"> <report format="CP XML"><![CDATA[<?xml version="1.0" encoding="UTF-8" standalone="yes"?> <personal_property xmlns="http://cp.com/rules/client"> <admin> <quoteback name="CASE_ID">XXX1501076</quoteback> </admin> <report> <summary> <total>0</total> <subject>0</subject> </summary> <search_dataset> <subject id="S1" unit_number="1" classification="Report"> <name> <first>TEST</first> <last>TESTING</last> </name> <birthdate>12/12/1948</birthdate> </subject> <address type="risk" id="A1"> <house>00</house> <street1>TEST</street1> <city>LAKE WORTH</city> <state>FL</state> <postalcode>33467</postalcode> <zip4>3818</zip4> </address> </search_dataset> </report> </personal_property> ]]></report> </personal_property> </product_results> <admin> <quoteback name="CASE_ID">XXX1501076</quoteback> </admin> <report> <summary> <total>0</total> <subject>0</subject> </summary> <search_dataset> <subject id="S1" unit_number="1" classification="Report"> <name> <first>TEST</first> <last>TESTING</last> </name> <birthdate>12/12/1948</birthdate> </subject> <address type="risk" id="A1"> <house>00</house> <street1>TEST</street1> <city>LAKE WORTH</city> <state>FL</state> <postalcode>33467</postalcode> <zip4>3818</zip4> </address> </search_dataset> </report> 您需要分步执行此操作(每一步都将结果保存到一个文件中,该文件将由下一步处理): 第一步 <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"> <xsl:output method="xml" version="1.0" encoding="UTF-8" indent="yes"/> <xsl:template match="/result"> <xsl:copy> <xsl:value-of select="." disable-output-escaping="yes"/> </xsl:copy> </xsl:template> </xsl:stylesheet> 结果一 <?xml version="1.0" encoding="UTF-8"?> <result> <client id="IP2633100"> <quoteback name="CASE_ID">XXX1501076</quoteback> </client> <order_dataset> <subjects> <subject id="S1"> <name type="primary"> <first>TEST</first> <middle></middle> <last>TESTING</last> <suffix></suffix> </name> <birthdate>12/12/1948</birthdate> <address type="mailing" ref="A2"/> <address type="risk" ref="A1"/> </subject> </subjects> <addresses> <address id="A1"> <street1>TEST</street1> <apartment></apartment> <city>LAKE WORTH</city> <state>FL</state> <postalcode>33467</postalcode> </address> <address id="A2"> <street1>TEST</street1> <apartment></apartment> <city>LAKE WORTH</city> <state>FL</state> <postalcode>33467</postalcode> </address> </addresses> </order_dataset> <product_results> <personal_property subject="TEST TESTING"> <report format="CP XML"><![CDATA[<?xml version="1.0" encoding="UTF-8" standalone="yes"?> <personal_property xmlns="http://cp.com/rules/client"> <admin> <quoteback name="CASE_ID">XXX1501076</quoteback> </admin> <report> <summary> <total>0</total> <subject>0</subject> </summary> <search_dataset> <subject id="S1" unit_number="1" classification="Report"> <name> <first>TEST</first> <last>TESTING</last> </name> <birthdate>12/12/1948</birthdate> </subject> <address type="risk" id="A1"> <house>00</house> <street1>TEST</street1> <city>LAKE WORTH</city> <state>FL</state> <postalcode>33467</postalcode> <zip4>3818</zip4> </address> </search_dataset> </report> </personal_property> ]]></report> </personal_property> </product_results> </result> 第2步(输入为结果1) <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"> <xsl:output method="xml" version="1.0" encoding="UTF-8" indent="yes"/> <!-- identity transform --> <xsl:template match="@*|node()"> <xsl:copy> <xsl:apply-templates select="@*|node()"/> </xsl:copy> </xsl:template> <xsl:template match="report"> <xsl:copy> <xsl:copy-of select="@*"/> <xsl:value-of select="substring-after(. , '>')" disable-output-escaping="yes"/> </xsl:copy> </xsl:template> </xsl:stylesheet> 结果2 <?xml version="1.0" encoding="UTF-8"?> <result> <client id="IP2633100"> <quoteback name="CASE_ID">XXX1501076</quoteback> </client> <order_dataset> <subjects> <subject id="S1"> <name type="primary"> <first>TEST</first> <middle/> <last>TESTING</last> <suffix/> </name> <birthdate>12/12/1948</birthdate> <address type="mailing" ref="A2"/> <address type="risk" ref="A1"/> </subject> </subjects> <addresses> <address id="A1"> <street1>TEST</street1> <apartment/> <city>LAKE WORTH</city> <state>FL</state> <postalcode>33467</postalcode> </address> <address id="A2"> <street1>TEST</street1> <apartment/> <city>LAKE WORTH</city> <state>FL</state> <postalcode>33467</postalcode> </address> </addresses> </order_dataset> <product_results> <personal_property subject="TEST TESTING"> <report format="CP XML"> <personal_property xmlns="http://cp.com/rules/client"> <admin> <quoteback name="CASE_ID">XXX1501076</quoteback> </admin> <report> <summary> <total>0</total> <subject>0</subject> </summary> <search_dataset> <subject id="S1" unit_number="1" classification="Report"> <name> <first>TEST</first> <last>TESTING</last> </name> <birthdate>12/12/1948</birthdate> </subject> <address type="risk" id="A1"> <house>00</house> <street1>TEST</street1> <city>LAKE WORTH</city> <state>FL</state> <postalcode>33467</postalcode> <zip4>3818</zip4> </address> </search_dataset> </report> </personal_property> </report> </personal_property> </product_results> </result> 第三步(输入为结果2) <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:ns0="http://cp.com/rules/client"> <xsl:output method="xml" version="1.0" encoding="UTF-8" indent="yes"/> <!-- identity transform --> <xsl:template match="@*|node()"> <xsl:copy> <xsl:apply-templates select="@*|node()"/> </xsl:copy> </xsl:template> <xsl:template match="ns0:*"> <xsl:element name="{local-name()}"> <xsl:apply-templates select="@*|node()"/> </xsl:element> </xsl:template> </xsl:stylesheet> 结果 3 <?xml version="1.0" encoding="UTF-8"?> <result> <client id="IP2633100"> <quoteback name="CASE_ID">XXX1501076</quoteback> </client> <order_dataset> <subjects> <subject id="S1"> <name type="primary"> <first>TEST</first> <middle/> <last>TESTING</last> <suffix/> </name> <birthdate>12/12/1948</birthdate> <address type="mailing" ref="A2"/> <address type="risk" ref="A1"/> </subject> </subjects> <addresses> <address id="A1"> <street1>TEST</street1> <apartment/> <city>LAKE WORTH</city> <state>FL</state> <postalcode>33467</postalcode> </address> <address id="A2"> <street1>TEST</street1> <apartment/> <city>LAKE WORTH</city> <state>FL</state> <postalcode>33467</postalcode> </address> </addresses> </order_dataset> <product_results> <personal_property subject="TEST TESTING"> <report format="CP XML"> <personal_property> <admin> <quoteback name="CASE_ID">XXX1501076</quoteback> </admin> <report> <summary> <total>0</total> <subject>0</subject> </summary> <search_dataset> <subject id="S1" unit_number="1" classification="Report"> <name> <first>TEST</first> <last>TESTING</last> </name> <birthdate>12/12/1948</birthdate> </subject> <address type="risk" id="A1"> <house>00</house> <street1>TEST</street1> <city>LAKE WORTH</city> <state>FL</state> <postalcode>33467</postalcode> <zip4>3818</zip4> </address> </search_dataset> </report> </personal_property> </report> </personal_property> </product_results> </result> 请注意,这需要支持disable-output-escaping的处理器。

回答 1 投票 0

if语句里面可以加模板吗? XSLT

假设我有以下 xml 你好 星期一 打开 ...

回答 1 投票 0

如何调整此 XSL 脚本以防止怪癖模式?

20 年前我开始开发我的软件。那时我使用 Expression Web Editor 来构建我的模板 HTML 文件。今天我注意到一条关于我的页面处于怪癖模式的消息。我看了...

回答 0 投票 0

使用一些过滤器将 XML 转换为 CSV

我有一个 XML,我正在尝试将其转换为带有一些过滤器的 CSV。我的 CSV 标题在下面,只有标题值应该出现在下面的数据中。这一切都是...

回答 1 投票 0

XSLT 映射以在同一序列中添加缺失的子标签

我有下面的输入 xml,其中缺少一些强制性 xml 标签,例如 需要以相同的顺序在输出中重现 我有下面的输入 xml,其中缺少一些强制性的 xml 标签,例如 需要以相同的顺序在输出中重现 <?xml version="1.0" encoding="UTF-8"?> <rsp stat="ok" version="1.0"> <result> <total_results>700</total_results> <emailClick> <id>1</id> <url>https://www.google.com</url> <email_template_id>12</email_template_id> <created_at>2023-02-14 00:00:10</created_at> </emailClick> <emailClick> <id>2</id> <url>https://www.hello.com</url> <created_at>2023-02-14 00:00:10</created_at> </emailClick> </result> </rsp> 需要以下输出 <emailClick> <id>1</id> <url>https://www.google.com</url> <email_template_id>12</email_template_id> <created_at>2023-02-14 00:00:10</created_at> </emailClick> <emailClick> <id>2</id> <url>https://www.hello.com</url> <email_template_id/> <created_at>2023-02-14 00:00:10</created_at> </emailClick> 我正在使用下面的 xslt 来实现这个输出 <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"> <xsl:output method="xml" encoding="utf-8" omit-xml-declaration="yes" indent ="yes"/> <xsl:strip-space elements="*"/> <xsl:template match="/"> <xsl:for-each select="rsp/result/emailClick"> <emailClick> <id><xsl:value-of select="id" /></id> <url><xsl:value-of select="url" /></url> <email_template_id><xsl:value-of select="email_template_id"/></email_template_id> <created_at><xsl:value-of select="created_at"/></created_at> </emailClick> </xsl:for-each> </xsl:template> </xsl:stylesheet> 有没有更好的方法来实现这一点,任何指导将不胜感激

回答 0 投票 0

给定预期输出,给我合适的

可以从此位置访问 XML 文件和报告。只需检索它们即可进行进一步的分析或处理。 可以从此位置访问 XML 文件和报告。只需检索它们即可进行进一步的分析或处理。 <?xml version='1.0' encoding='UTF-8'?><wd:Report_Data xmlns:wd="urn:com.workday.report/AS-Job"> <wd:Report_Entry><wd:Employee_ID>21001</wd:Employee_ID><wd:Employee_Name wd:Descriptor="Logan McNeil"><wd:ID wd:type="WID">e5bc2ab66e12108afc0ea6bd21e18eb5</wd:ID></wd:Employee_Name><wd:businessTitle>manager</wd:businessTitle><wd:Pay_Group wd:Descriptor="USA Monthly"><wd:ID wd:type="WID">a6a3d98667254c5792bab31405b12abf</wd:ID><wd:ID wd:type="Organization_Reference_ID">USA_Monthly</wd:ID></wd:Pay_Group><wd:Supervisory_Organization wd:Descriptor="Human Resources"><wd:ID wd:type="WID">e02485f863ec48d39a082bb95cc4abe4</wd:ID><wd:ID wd:type="Organization_Reference_ID">SUPERVISORY_Human_Resources</wd:ID></wd:Supervisory_Organization><wd:User_Name>lmcneil</wd:User_Name><wd:Primary_Address_-_Formatted_Line_1>42 Laurel Street</wd:Primary_Address_-_Formatted_Line_1><wd:city>San%20Francisco</wd:city><wd:Primary_Address_-_Country_Name>California</wd:Primary_Address_-_Country_Name><wd:Primary_Address_-_Postal_Code>94118</wd:Primary_Address_-_Postal_Code></wd:Report_Entry><wd:Report_Entry> Expected Output:: Employee ID,Employee Name,Business Title,Pay Group,Supervisory Organization,Username,Address Line 1,Address Line 2,City,State,Postal Code,Location ADP ID 10001,"Logan, Mcneil","Corporate VP Paralegal","USA Monthly","Human Resources","lmcneil","42 Laurel Street","","Des Moines","Iowa",50047,"ADP PayForce.Location: SF1 -> San Francisco" 20220924,1 Trailer Row -> Today's Date and Count of workers send in output file. Selection Critera -> Country - USA, Regular, Full Time Schedule -> Everyday, 5 AM UTC

回答 0 投票 0

xsl 1.0 代码创建一个不同的元素不起作用

我有这个 xsl 1.0 调用模板。 它采用两个 xml 元素,作为参数给出,并返回一个从两个参数创建的元素,但具有不同的元素。应删除所有双打 ...

回答 2 投票 0

需要写一个xslt来将xml转换为带有特定数据的csv

我正在尝试编写一个 xslt,它从 xml 创建一个 csv。我需要创建一个标头字段映射,使标头与数据匹配。 这是一个示例 xml <

回答 2 投票 0

无法通过父标签的键获取子标签值

我正在尝试更改/修复现有的 xslt1.0 样式表,但我不明白为什么它不起作用。 这是 XML 的一部分: l: 部分xml 我正在尝试更改/修复现有的 xslt1.0 样式表,但我不明白为什么它不起作用。 这是 XML 的一部分: l: part of the xml <Survey> <SurveyHeader name="230222-CODE-TEST_1"/> <Equipment> <GPSReceiverDetails id="GPS_1" manufacturer="Leica Geosystems AG" model=" " serialNumber=" "/> </Equipment> <GPSSetup id="GPSSetupID_4" GPSReceiverDetailsID="GPS_1" antennaHeight="1.544000" stationName="GPS0001"> <GPSPosition pntRef="GPS0001" wgsLatitude="53.201424895062324" wgsLongitude="6.564586909979438" wgsHeight="42.733122"> <TargetPoint name="GPS0001" pntRef="GPS0001" >580062.951336 233674.586902 1.958197</TargetPoint> <GPSQCInfoLevel2 covarianceXX="0.0000556906" covarianceXY="-0.0000044136" covarianceXZ="0.0000055377" covarianceYY="0.0000384521" covarianceYZ="0.0000021151" covarianceZZ="0.0000702572" RMS="1.000000" startTime="1361092385" stopTime="1361092385"/> </GPSPosition> </GPSSetup> </Survey> h: part of the xml <Survey name="230222-CODE-TEST_1" SurveyDuration="P0Y0M0DT0H4M4S"> <GPSSetup uniqueID="GPSSetupID_4"> <GPSPosition targetPntRef="GPS0001" tiltCompensated="true" verticalOffset="0.000000"> <GPSQuality HDOP="0.600000" GDOP="1.878829" PDOP="1.252996" VDOP="1.100000" TDOP="1.400000"/> <SatelliteInfo GPSSatTracked="9" GPSSatUsed="9" GALILEOSatTracked="4" GALILEOSatUsed="4" GLONASSSatTracked="6" GLONASSSatUsed="5" BEIDOUSatTracked="12" BEIDOUSatUsed="12"/> <RTKInfo referenceRef="RTCM-Ref 0028" networkSolution="true" networkType="i-MAX" dataFormat="RTCM v3" ipAddress="nl.nrtk.eu" port="7801" mountpoint="MSM_iMAX" insideRTKNetwork="Inside" GPUID="" numRefStationUsed="1" numRTKPositionUsed="0"/> <GPSPositionVelocity velocityX="0.017137" velocityY="0.001990" velocityZ="-0.010346" linearVelocityUnit="linearUnitPerSecond"> <VelocityQuality Qxx="0.00073671" Qxy="-0.00014277" Qxz="0.00014533" Qyy="0.00039546" Qyz="-0.00000568" Qzz="0.00262066" MeanError="1.00000000"/> </GPSPositionVelocity> <TiltInfo tilt="2.09289226" tiltQuality="0.20604831" maxTilt="2.09289172" maxTiltQuality="0.20604831" tiltDirection="292.82119353" tiltDirectionQuality="6.73585423" antennaHeading="126.49655262" antennaHeadingQuality="1.56022984"> <AttitudeQuaternion w="0.545783971615954" x="0.014694157165700" y="-0.007365463010343" z="-0.837764697290921"> <QuaternionQuality Qxx="0.0000105379" Qxy="0.0000002941" Qxz="-0.0000101108" Qyy="0.0000108098" Qyz="0.0000066687" Qzz="0.0008271720" MeanError="63.6619772368"/> </AttitudeQuaternion> <AngularVelocity velocityX="-3.1438191155" velocityY="1.5740678692" velocityZ="-1.4080006143" AngularVelocityType="angularUnitPerSecond"> <VelocityQuality Qxx="0.0000001490" Qxy="0.0000002552" Qxz="-0.0000000169" Qyy="0.0000005309" Qyz="0.0000000154" Qzz="0.0000003482" MeanError="63.6619772368"/> </AngularVelocity> <LeverArm deltaNorth="0.001000" deltaEast="0.000280" deltaUp="-1.643910"/> </TiltInfo> </GPSPosition> </GPSSetup> </Survey> 在 xslt 模板中,我有以下键和变量: <xsl:key name="KeyGPSPositionH" match="h:GPSPosition" use="@targetPntRef" /> <xsl:template match="l:GPSPosition"> <xsl:variable name="gpsSetupH" select="key('KeyGPSPositionH',@pntRef)" /> 如果我然后使用: <xsl:value-of select="$gpsSetupH/h:GPSQuality/@HDOP" /> 它从 xml 返回 HDOP 的值 或者: <xsl:value-of select="$gpsSetupH/h:SatelliteInfo/@GPSSatTracked" /> 它从 xml 返回 GPSSatTracked 的值 但是如果我把它改成: <xsl:value-of select="$gpsSetupH/h:TiltInfo/@tiltQuality" /> 或 <xsl:value-of select="$gpsSetupH/@verticalOffset" /> 尽管它与其他两个具有相同的父标签,但它什么也不返回。 我试图将其更改为 <xsl:value-of select="$gpsSetupH/h:GPSPosition/h:TiltInfo/@tiltQuality" /> 并更改密钥以使其在调查标签中开始 <xsl:key name="KeySurveyH" match="h:Survey" use="h:GPSSetup/h:GPSPosition/@targetPntRef" /> 但是这两个选项都不起作用。 当我将 XSLT 1.0 与 XslCompiledTransform 一起使用并尝试将您的代码片段变成最小的、格式化的、完整的示例时,我得到的 XML 为 <?xml version="1.0" encoding="UTF-8"?> <root> <Survey> <SurveyHeader name="230222-CODE-TEST_1"/> <Equipment> <GPSReceiverDetails id="GPS_1" manufacturer="Leica Geosystems AG" model=" " serialNumber=" "/> </Equipment> <GPSSetup id="GPSSetupID_4" GPSReceiverDetailsID="GPS_1" antennaHeight="1.544000" stationName="GPS0001"> <GPSPosition pntRef="GPS0001" wgsLatitude="53.201424895062324" wgsLongitude="6.564586909979438" wgsHeight="42.733122"> <TargetPoint name="GPS0001" pntRef="GPS0001">580062.951336 233674.586902 1.958197</TargetPoint> <GPSQCInfoLevel2 covarianceXX="0.0000556906" covarianceXY="-0.0000044136" covarianceXZ="0.0000055377" covarianceYY="0.0000384521" covarianceYZ="0.0000021151" covarianceZZ="0.0000702572" RMS="1.000000" startTime="1361092385" stopTime="1361092385"/> </GPSPosition> </GPSSetup> </Survey> <Survey name="230222-CODE-TEST_1" SurveyDuration="P0Y0M0DT0H4M4S"> <GPSSetup uniqueID="GPSSetupID_4"> <GPSPosition targetPntRef="GPS0001" tiltCompensated="true" verticalOffset="0.000000"> <GPSQuality HDOP="0.600000" GDOP="1.878829" PDOP="1.252996" VDOP="1.100000" TDOP="1.400000"/> <SatelliteInfo GPSSatTracked="9" GPSSatUsed="9" GALILEOSatTracked="4" GALILEOSatUsed="4" GLONASSSatTracked="6" GLONASSSatUsed="5" BEIDOUSatTracked="12" BEIDOUSatUsed="12"/> <RTKInfo referenceRef="RTCM-Ref 0028" networkSolution="true" networkType="i-MAX" dataFormat="RTCM v3" ipAddress="nl.nrtk.eu" port="7801" mountpoint="MSM_iMAX" insideRTKNetwork="Inside" GPUID="" numRefStationUsed="1" numRTKPositionUsed="0"/> <GPSPositionVelocity velocityX="0.017137" velocityY="0.001990" velocityZ="-0.010346" linearVelocityUnit="linearUnitPerSecond"> <VelocityQuality Qxx="0.00073671" Qxy="-0.00014277" Qxz="0.00014533" Qyy="0.00039546" Qyz="-0.00000568" Qzz="0.00262066" MeanError="1.00000000"/> </GPSPositionVelocity> <TiltInfo tilt="2.09289226" tiltQuality="0.20604831" maxTilt="2.09289172" maxTiltQuality="0.20604831" tiltDirection="292.82119353" tiltDirectionQuality="6.73585423" antennaHeading="126.49655262" antennaHeadingQuality="1.56022984"> <AttitudeQuaternion w="0.545783971615954" x="0.014694157165700" y="-0.007365463010343" z="-0.837764697290921"> <QuaternionQuality Qxx="0.0000105379" Qxy="0.0000002941" Qxz="-0.0000101108" Qyy="0.0000108098" Qyz="0.0000066687" Qzz="0.0008271720" MeanError="63.6619772368"/> </AttitudeQuaternion> <AngularVelocity velocityX="-3.1438191155" velocityY="1.5740678692" velocityZ="-1.4080006143" AngularVelocityType="angularUnitPerSecond"> <VelocityQuality Qxx="0.0000001490" Qxy="0.0000002552" Qxz="-0.0000000169" Qyy="0.0000005309" Qyz="0.0000000154" Qzz="0.0000003482" MeanError="63.6619772368"/> </AngularVelocity> <LeverArm deltaNorth="0.001000" deltaEast="0.000280" deltaUp="-1.643910"/> </TiltInfo> </GPSPosition> </GPSSetup> </Survey> </root> XSLT 为 <?xml version="1.0" encoding="UTF-8"?> <xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0"> <xsl:key name="KeyGPSPositionH" match="GPSPosition" use="@targetPntRef" /> <xsl:template match="@* | node()" name="identity"> <xsl:copy> <xsl:apply-templates select="@* | node()"/> </xsl:copy> </xsl:template> <xsl:template match="GPSPosition[@pntRef]"> <xsl:call-template name="identity"/> <xsl:variable name="gpsSetupH" select="key('KeyGPSPositionH',@pntRef)" /> <xsl:comment> <xsl:text>tiltQuality: </xsl:text> <xsl:value-of select="$gpsSetupH/TiltInfo/@tiltQuality" /> <xsl:text>; verticalOffset: </xsl:text> <xsl:value-of select="$gpsSetupH/@verticalOffset"/> </xsl:comment> </xsl:template> <xsl:output indent="yes"/> </xsl:stylesheet> 结果为 <?xml version="1.0" encoding="utf-16"?> <root> <Survey> <SurveyHeader name="230222-CODE-TEST_1" /> <Equipment> <GPSReceiverDetails id="GPS_1" manufacturer="Leica Geosystems AG" model=" " serialNumber=" " /> </Equipment> <GPSSetup id="GPSSetupID_4" GPSReceiverDetailsID="GPS_1" antennaHeight="1.544000" stationName="GPS0001"> <GPSPosition pntRef="GPS0001" wgsLatitude="53.201424895062324" wgsLongitude="6.564586909979438" wgsHeight="42.733122"> <TargetPoint name="GPS0001" pntRef="GPS0001">580062.951336 233674.586902 1.958197</TargetPoint> <GPSQCInfoLevel2 covarianceXX="0.0000556906" covarianceXY="-0.0000044136" covarianceXZ="0.0000055377" covarianceYY="0.0000384521" covarianceYZ="0.0000021151" covarianceZZ="0.0000702572" RMS="1.000000" startTime="1361092385" stopTime="1361092385" /> </GPSPosition><!--tiltQuality: 0.20604831; verticalOffset: 0.000000--> </GPSSetup> </Survey> <Survey name="230222-CODE-TEST_1" SurveyDuration="P0Y0M0DT0H4M4S"> <GPSSetup uniqueID="GPSSetupID_4"> <GPSPosition targetPntRef="GPS0001" tiltCompensated="true" verticalOffset="0.000000"> <GPSQuality HDOP="0.600000" GDOP="1.878829" PDOP="1.252996" VDOP="1.100000" TDOP="1.400000" /> <SatelliteInfo GPSSatTracked="9" GPSSatUsed="9" GALILEOSatTracked="4" GALILEOSatUsed="4" GLONASSSatTracked="6" GLONASSSatUsed="5" BEIDOUSatTracked="12" BEIDOUSatUsed="12" /> <RTKInfo referenceRef="RTCM-Ref 0028" networkSolution="true" networkType="i-MAX" dataFormat="RTCM v3" ipAddress="nl.nrtk.eu" port="7801" mountpoint="MSM_iMAX" insideRTKNetwork="Inside" GPUID="" numRefStationUsed="1" numRTKPositionUsed="0" /> <GPSPositionVelocity velocityX="0.017137" velocityY="0.001990" velocityZ="-0.010346" linearVelocityUnit="linearUnitPerSecond"> <VelocityQuality Qxx="0.00073671" Qxy="-0.00014277" Qxz="0.00014533" Qyy="0.00039546" Qyz="-0.00000568" Qzz="0.00262066" MeanError="1.00000000" /> </GPSPositionVelocity> <TiltInfo tilt="2.09289226" tiltQuality="0.20604831" maxTilt="2.09289172" maxTiltQuality="0.20604831" tiltDirection="292.82119353" tiltDirectionQuality="6.73585423" antennaHeading="126.49655262" antennaHeadingQuality="1.56022984"> <AttitudeQuaternion w="0.545783971615954" x="0.014694157165700" y="-0.007365463010343" z="-0.837764697290921"> <QuaternionQuality Qxx="0.0000105379" Qxy="0.0000002941" Qxz="-0.0000101108" Qyy="0.0000108098" Qyz="0.0000066687" Qzz="0.0008271720" MeanError="63.6619772368" /> </AttitudeQuaternion> <AngularVelocity velocityX="-3.1438191155" velocityY="1.5740678692" velocityZ="-1.4080006143" AngularVelocityType="angularUnitPerSecond"> <VelocityQuality Qxx="0.0000001490" Qxy="0.0000002552" Qxz="-0.0000000169" Qyy="0.0000005309" Qyz="0.0000000154" Qzz="0.0000003482" MeanError="63.6619772368" /> </AngularVelocity> <LeverArm deltaNorth="0.001000" deltaEast="0.000280" deltaUp="-1.643910" /> </TiltInfo> </GPSPosition> </GPSSetup> </Survey> </root> 输出注释<!--tiltQuality: 0.20604831; verticalOffset: 0.000000-->建议XPath表达式查找数据。 因此,请考虑提供最少但完整的示例,以便我们重现问题,以及有关您使用的 XSLT 1.0 处理器的信息。

回答 1 投票 0

XSL如何计算每个元素的属性值的乘积之和

我有这个xml 姓名1 我有这个xml <Process> <name>name1</name> <ListOfItems> <item name="name2" price="10" quantity="1" value=""></item> <item name="name7" price="10" quantity="2" value=""></item> <item name="name12" price="10" quantity="3" value=""></item> <item name="name17" price="10" quantity="4" value=""></item> </ListOfItems> <taxType>TEN</taxType> </Process> 我想要的输出 <ProcessResponse> <name>name1</name> <ListOfItems> <item name="name2" price="10" quantity="1" value="10"></item> <item name="name7" price="10" quantity="2" value="20"></item> <item name="name12" price="10" quantity="3" value="30"></item> <item name="name17" price="10" quantity="4" value="40"></item> </ListOfItems> <totalAmount>100</totalAmount> <taxAmount>10</taxAmount> <grandTotal>110</grandTotal> </ProcessResponse> 它的发票用途,一些额外的信息: value 是商品成本(价格 x 数量) totalAmount 是 sum(value) taxAmount 是(如果 taxType = AAA,taxAmount = totalAmount x(某个固定数字 / 100)) 最后 grandTotal = totalAmount + taxAmount 由 ORACLE XSL MAPPER 11.1.1.6.0(内部版本 111214.0600.1553)生成 样式表版本=“1.0” 我两天以来做了很多研究并使用了一些模板 获取 totalAmount 但它在浏览器测试器上有效,但在“jdeveloper”转换中无效。 我发现问题出在模板匹配上 在浏览器中 <xsl:template match="/Process/ListOfItems"> 有效但在 jdev 中无效 甚至<xsl:template match="/">都不起作用 请帮忙解决这个问题, 提前致谢。 在 XSLT 2.0 内计算值的 sum() 会容易得多,但在 XSLT 1.0 内有点棘手,请参阅下一个 XSLT: <?xml version="1.0" encoding="UTF-8"?> <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"> <xsl:output method="xml" version="1.0" encoding="UTF-8" indent="yes"/> <!-- Identity template --> <xsl:template match="@*|node()"> <xsl:copy> <xsl:apply-templates select="@*|node()" /> </xsl:copy> </xsl:template> <!-- Rename root node --> <xsl:template match="Process"> <ProcessResponse> <xsl:apply-templates select="@*|node()" /> </ProcessResponse> </xsl:template> <!-- Match on ListOfItems, to add new elements after it --> <xsl:template match="ListOfItems"> <!-- Copy existing --> <xsl:copy> <xsl:apply-templates select="@*|node()" /> </xsl:copy> <!-- Create the new elements --> <xsl:apply-templates select="item[1]" mode="sumValue" /> </xsl:template> <!-- Match on item element to do the calculation of value attribute --> <xsl:template match="item"> <xsl:copy> <!-- Copy existing attributes --> <xsl:apply-templates select="@*" /> <!-- Actual calculation --> <xsl:attribute name="value"> <xsl:value-of select="@quantity * @price" /> </xsl:attribute> <!-- Copy rest of nodes --> <xsl:apply-templates select="node()" /> </xsl:copy> </xsl:template> <xsl:template match="item" mode="sumValue"> <xsl:param name="currentSumValue" select="0" /> <!-- Variable to store the updated sum value --> <xsl:variable name="updatedSumValue" select="$currentSumValue + (@quantity * @price)" /> <!-- Proceed summing with the next item--> <xsl:apply-templates select="following-sibling::item[1]" mode="sumValue"> <xsl:with-param name="currentSumValue" select="$updatedSumValue" /> </xsl:apply-templates> <!-- No more items. Summing is complete, we can display the totalAmount and calculate the rest --> <xsl:if test="not(following-sibling::item)"> <totalAmount><xsl:value-of select="$updatedSumValue"/></totalAmount> <!-- taxAmount --> <xsl:variable name="taxAmount"> <xsl:choose> <xsl:when test="/Process/taxType = 'TEN'"> <xsl:value-of select="$updatedSumValue * (10 div 100)" /> </xsl:when> <xsl:otherwise> <xsl:value-of select="$updatedSumValue" /> </xsl:otherwise> </xsl:choose> </xsl:variable> <taxAmount><xsl:value-of select="$taxAmount" /></taxAmount> <!-- grandTotal --> <grandTotal><xsl:value-of select="$updatedSumValue + $taxAmount" /></grandTotal> </xsl:if> </xsl:template> <!-- Remove element taxType --> <xsl:template match="taxType" /> </xsl:stylesheet> 当应用于您的输入 XML 时,结果将是: <?xml version="1.0" encoding="UTF-8"?> <ProcessResponse> <name>name1</name> <ListOfItems> <item name="name2" price="10" quantity="1" value="10"/> <item name="name7" price="10" quantity="2" value="20"/> <item name="name12" price="10" quantity="3" value="30"/> <item name="name17" price="10" quantity="4" value="40"/> </ListOfItems> <totalAmount>100</totalAmount> <taxAmount>10</taxAmount> <grandTotal>110</grandTotal> </ProcessResponse> 希望对您有所帮助,并且 de XSLT 中的注释对您有所帮助... 另一个使用XSLT 1.0的版本,但它使用了扩展功能 <?xml version="1.0" encoding="UTF-8"?> <xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:ext="http://exslt.org/common" exclude-result-prefixes="ext" version="1.0"> <xsl:template match="@*|node()"> <xsl:copy> <xsl:apply-templates select="@*|node()"/> </xsl:copy> </xsl:template> <xsl:variable name="tmpvalue"> <xsl:for-each select="//item"> <value><xsl:value-of select="@price*@quantity"/></value> </xsl:for-each> </xsl:variable> <xsl:variable name="taxAmount"> <!-- set you tax formula here --> <xsl:value-of select="'10'"/> </xsl:variable> <xsl:template match="Process"> <ProcessResponse> <xsl:apply-templates/> <totalAmount> <xsl:variable name="myValue" select="ext:node-set($tmpvalue)"/> <xsl:value-of select="sum($myValue/value)"/> </totalAmount> <taxAmount><xsl:value-of select="$taxAmount"/></taxAmount> <grandTotal> <xsl:variable name="myValue" select="ext:node-set($tmpvalue)"/> <xsl:value-of select="sum($myValue/value) + $taxAmount"/> </grandTotal> </ProcessResponse> </xsl:template> <xsl:template match="item"> <xsl:copy> <xsl:apply-templates select="@*"/> <xsl:attribute name="value"><xsl:value-of select="@price*@quantity"/></xsl:attribute> </xsl:copy> </xsl:template> </xsl:stylesheet> 我也会使用 EXSLT node-set() 函数,只是模板更少: <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:exsl="http://exslt.org/common" extension-element-prefixes="exsl"> <xsl:output method="xml" version="1.0" encoding="utf-8" indent="yes"/> <xsl:param name="taxRate" select=".06"/> <xsl:template match="/Process"> <ProcessResponse> <xsl:copy-of select="name"/> <!-- pre-process items --> <xsl:variable name="items"> <xsl:for-each select="ListOfItems/item"> <xsl:copy> <xsl:copy-of select="@*"/> <xsl:attribute name="value"> <xsl:value-of select="@price*@quantity" /> </xsl:attribute> </xsl:copy> </xsl:for-each> </xsl:variable> <xsl:variable name="total" select="sum(exsl:node-set($items)/item/@value)" /> <!-- output --> <ListOfItems> <xsl:copy-of select="$items"/> </ListOfItems> <totalAmount> <xsl:value-of select="$total" /> </totalAmount> <taxAmount> <xsl:value-of select="$total * $taxRate" /> </taxAmount> <grandTotal> <xsl:value-of select="$total * (1 + $taxRate)" /> </grandTotal> </ProcessResponse> </xsl:template> </xsl:stylesheet> 如果你的处理器恰好支持EXSLT dyn:map() 扩展函数,那么你还有另一种方法可以得到预期的结果: <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:dyn="http://exslt.org/dynamic" extension-element-prefixes="dyn"> <xsl:output method="xml" version="1.0" encoding="UTF-8" indent="yes"/> <xsl:param name="taxRate" select=".06"/> <xsl:template match="/Process"> <ProcessResponse> <xsl:copy-of select="name"/> <ListOfItems> <xsl:for-each select="ListOfItems/item"> <xsl:copy> <xsl:copy-of select="@*"/> <xsl:attribute name="extprice"> <xsl:value-of select="@price * @quantity" /> </xsl:attribute> </xsl:copy> </xsl:for-each> </ListOfItems> <xsl:variable name="total" select="sum(dyn:map(ListOfItems/item, '@price * @quantity'))" /> <total> <xsl:value-of select="$total" /> </total> <tax> <xsl:value-of select="$total * $taxRate" /> </tax> <grandTotal> <xsl:value-of select="$total * (1 + $taxRate)" /> </grandTotal> </ProcessResponse> </xsl:template> </xsl:stylesheet>

回答 3 投票 0

内联容器XSLT1.0的默认高度

当我们定义一个设置了宽度的 fo:inline 容器时,该容器的默认高度是多少? 示例代码: 当我们定义一个设置了宽度的 fo:inline 容器时,该容器的默认高度是多少? 示例代码: <fo:inline-container width="3in"> <fo:block font-size="7pt"> <fo:external-graphic padding-left="10mm" src="file:///{$imgLogo}"/> <xsl:call-template name="Address"/> </fo:block> </fo:inline-container> 在这里我想了解高度(宽度已知),以便我可以设置外部图形的尺寸。

回答 0 投票 0

XSLT 按节点值与每个兄弟节点分组

我最近开始学习xslt,我面临着以下任务。 stackoverflow 上有很多类似的问题,但是他们都没有考虑当你需要把一个值放在我...

回答 1 投票 0

重新排序表列

在另一个问题之后,我正在寻找一个更通用的解决方案来解决按自定义顺序重新排列表格列的问题。我找不到任何东西,所以我把我的贴在这里。 输入 XML 在another question之后,我正在寻找一个更通用的解决方案来解决按自定义顺序重新排列表格列的问题。我找不到任何东西,所以我把我的贴在这里。 输入 XML <table> <row> <cell>NAME</cell> <cell>DATE</cell> <cell>SIZE</cell> <cell>COLOR</cell> </row> <row> <cell>Alpha</cell> <cell>2023-02-19</cell> <cell>Small</cell> <cell>Red</cell> </row> <row> <cell>Bravo</cell> <cell>2023-02-19</cell> <cell>Small</cell> <cell>Green</cell> </row> <row> <cell>Charlie</cell> <cell>2023-02-19</cell> <cell>Small</cell> <cell>Blue</cell> </row> </table> 预期产出 <table border="1"> <tr> <th>DATE</th> <th>COLOR</th> <th>SIZE</th> <th>NAME</th> </tr> <tr> <td>2023-02-19</td> <td>Red</td> <td>Small</td> <td>Alpha</td> </tr> <tr> <td>2023-02-19</td> <td>Green</td> <td>Small</td> <td>Bravo</td> </tr> <tr> <td>2023-02-19</td> <td>Blue</td> <td>Small</td> <td>Charlie</td> </tr> </table> XSLT 1.0(具有 EXSLT node-set() 扩展功能) <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:exsl="http://exslt.org/common" extension-element-prefixes="exsl"> <xsl:output method="xml" version="1.0" encoding="UTF-8" indent="yes"/> <xsl:param name="new-order">DATE,COLOR,SIZE,NAME</xsl:param> <xsl:template match="/table"> <xsl:variable name="columns-RTF"> <xsl:call-template name="generate-columns"> <xsl:with-param name="headings" select="$new-order"/> <xsl:with-param name="top-row-cells" select="row[1]/cell"/> </xsl:call-template> </xsl:variable> <xsl:variable name="columns" select="exsl:node-set($columns-RTF)/column" /> <!-- output --> <table border="1"> <!-- header --> <tr> <xsl:for-each select="$columns"> <th> <xsl:value-of select="." /> </th> </xsl:for-each> </tr> <!-- data --> <xsl:for-each select="row[position() > 1]"> <tr> <xsl:variable name="cells" select="cell" /> <xsl:for-each select="$columns"> <td> <xsl:value-of select="$cells[position() = current()/@i]" /> </td> </xsl:for-each> </tr> </xsl:for-each> </table> </xsl:template> <xsl:template name="generate-columns"> <xsl:param name="headings"/> <xsl:param name="top-row-cells"/> <xsl:param name="delimiter" select="','"/> <xsl:variable name="token" select="substring-before(concat($headings, $delimiter), $delimiter)" /> <column i="{count($top-row-cells[. = $token]/preceding-sibling::cell) + 1}"> <xsl:value-of select="$token"/> </column> <xsl:if test="contains($headings, $delimiter)"> <!-- recursive call --> <xsl:call-template name="generate-columns"> <xsl:with-param name="headings" select="substring-after($headings, $delimiter)"/> <xsl:with-param name="top-row-cells" select="$top-row-cells"/> </xsl:call-template> </xsl:if> </xsl:template> </xsl:stylesheet> 使用支持 tokenize() 扩展功能的处理器,这可以简化为: <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:exsl="http://exslt.org/common" xmlns:str="http://exslt.org/strings" extension-element-prefixes="exsl str"> <xsl:output method="xml" version="1.0" encoding="UTF-8" indent="yes"/> <xsl:param name="new-order">DATE,COLOR,SIZE,NAME</xsl:param> <xsl:template match="/table"> <xsl:variable name="top-row-cells" select="row[1]/cell"/> <xsl:variable name="columns-RTF"> <xsl:for-each select="str:tokenize($new-order, ',')"> <column i="{count($top-row-cells[. = current()]/preceding-sibling::cell) + 1}"> <xsl:value-of select="."/> </column> </xsl:for-each> </xsl:variable> <xsl:variable name="columns" select="exsl:node-set($columns-RTF)/column" /> <!-- output --> <table border="1"> <!-- header --> <tr> <xsl:for-each select="$columns"> <th> <xsl:value-of select="." /> </th> </xsl:for-each> </tr> <!-- data --> <xsl:for-each select="row[position() > 1]"> <tr> <xsl:variable name="cells" select="cell" /> <xsl:for-each select="$columns"> <td> <xsl:value-of select="$cells[position() = current()/@i]" /> </td> </xsl:for-each> </tr> </xsl:for-each> </table> </xsl:template> </xsl:stylesheet>

回答 1 投票 0

按元素和值分组 XSLT

我是XSLT的新手,我被一个问题卡住了。我已经做了一些搜索,我读到了关于Muenchian分组,但我不知道如何在这个prorblem中使用它。我试图在XSLT中写代码来读取每 ...

回答 1 投票 0

如果一个子节点是重复的,我如何删除一个节点?

我试图使用xslt1来转换一个xml。基本的,我想删除一个节点,如果某个子节点的子节点已经存在,输入的格式是这样的。 ...很多数据...

回答 1 投票 0

XSLT 1.0 如何在可选元素后更新或插入元素

这和这个问题类似。XSLT-1.0:如何在相对于父元素的特定位置插入一个元素,但那里的答案并没有涵盖标签3缺失的情况。

回答 1 投票 0

有没有办法在XSLT中动态地给XML ELEMENTS分配头。

我正试图建立一个通用接口,通过协和XML元素将24个不同的XML结构转换为Flate文件。在Dell Boomi中,我们有一个选项可以动态地将变量名传递给XSLT。...

回答 1 投票 0

如何使用xslt 1.0从一个文本中获取所有数字的总和。

例如,数据 YQ:LH YQ附加费。10.00欧元;GB:英国航空旅客税APD:15.46欧元;RA:德国旅客服务费国际出发:26.59欧元;DE:......。

回答 1 投票 0

XSLT 1.0 : 需要对具有父ID的元素进行分组。

我有一个需求,我需要将Parentsscc与其Logisticsscc相关联,我们需要在输入文件中检查相同的Parentsscc & 需要将其与Logisticsscc相关联。

回答 1 投票 0

© www.soinside.com 2019 - 2024. All rights reserved.