xslt-1.0 相关问题

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

为什么我无法使用 C# 从此 XSL 脚本获取链接的 CSS 文件列表?

这是我的 XSL 文件的一部分: 这是我的 XSL 文件的一部分: <?xml version="1.0" encoding="utf-8"?> <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns="http://www.w3.org/1999/xhtml"> <xsl:output method="html" indent="yes" version="4.01" doctype-system="http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd" doctype-public="-//W3C//DTD XHTML 1.0 Transitional//EN"/> <xsl:param name="CSSFile1"></xsl:param> <xsl:template match="/"> <html xmlns="http://www.w3.org/1999/xhtml"> <xsl:choose> <xsl:when test="//Settings/ForeignGroupMode=1"> <xsl:attribute name="lang"> <xsl:value-of select="//Settings/ForeignGroupLanguageCode"/> </xsl:attribute> <xsl:attribute name="dir"> <xsl:value-of select="//Settings/ForeignGroupDirection"/> </xsl:attribute> </xsl:when> <xsl:otherwise> <xsl:attribute name="lang"> <xsl:value-of select="//Settings/LanguageCode"/> </xsl:attribute> <xsl:attribute name="dir"> <xsl:value-of select="//Settings/Direction"/> </xsl:attribute> </xsl:otherwise> </xsl:choose> <head> <meta http-equiv="X-UA-Compatible" content="IE=edge" /> <meta content="text/html; charset=utf-8" http-equiv="Content-Type" /> <xsl:choose> <xsl:when test="$CSSFile1 !=''"> <style type="text/css"> <xsl:value-of select="$CSSFile1"/> </style> </xsl:when> <xsl:otherwise> <link rel="stylesheet" type="text/css" href="Workbook-S-140-Legacy.css"/> </xsl:otherwise> </xsl:choose> <title> <xsl:value-of select="//Labels/Congregation"/>&#160;<xsl:value-of select="//Labels/Title" /> </title> </head> <body> </body> </html> </xsl:template> 它有 CSS 链接,例如: <link rel="stylesheet" type="text/css" href="Workbook-S-140-Legacy.css"/> 我尝试编写一个 C# 例程来为我提供所有链接的 CSS 文件的列表: public string[] GetLinkedCssFilesList(string xslFilePath) { XDocument document = XDocument.Load(xslFilePath); List<string> cssFiles = new List<string>(); var cssLinks = document.Descendants("link"); foreach(var css in cssLinks) { cssFiles.Add(css.Attribute("href").Value); } return cssFiles.ToArray(); } 但是结果列表是空的。为什么? 注意 XSL 中的默认 xml 命名空间声明 xmlns="http://www.w3.org/1999/xhtml"。 link 元素属于 http://www.w3.org/1999/xhtml xml 命名空间。 您在检索它们时需要包含该内容。 XNamespace ns = "http://www.w3.org/1999/xhtml"; var cssLinks = document.Descendants(ns + "link");

回答 1 投票 0

XSLT 映射以删除标头段

我正在尝试使用 XSLT 1.0 从我的输入 xml 中删除标头段,但无法获得所需的输出。请在这里帮助我。 输入 我尝试使用 XSLT 1.0 从输入 xml 中删除标头段,但无法获得所需的输出。请在这里帮助我。 输入 <?xml version="1.0" encoding="UTF-8"?> <HEADER> <CHILD1 BEGIN="1"> <EDI SEGMENT="1"> <FIELD1>EDI</FIELD1> <FIELD2>2</FIELD2> <FIELD3>HEADER</FIELD3> </EDI> </CHILD1> </HEADER> 输出(无 XML 声明和 HEADER 段) <CHILD1 BEGIN="1"> <EDI SEGMENT="1"> <FIELD1>EDI</FIELD1> <FIELD2>2</FIELD2> <FIELD3>HEADER</FIELD3> </EDI> </CHILD1> 我试过的代码 <?xml version="1.0" encoding="UTF-8"?> <xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0"> <xsl:template match="HEADER"> <CHILD BEGIN="1"> <xsl:copy-of select="."/> </CHILD> </xsl:template> </xsl:stylesheet> 使用 <xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0"> <xsl:template match="/HEADER"> <xsl:copy-of select="*"/> </xsl:template> </xsl:stylesheet> 对于转换的序列化结果中没有XML声明的情况,可以声明<xsl:output method="xml" omit-xml-declaration="yes"/>。

回答 1 投票 0

XSLT 映射到输入文件中的正确 XML 格式

我正在检查使用 XSLT 1.0 映射更正输入 XML 文件语法的可能性,但找不到任何相关博客,这可能吗? 输入是多个文件的组合...

回答 1 投票 0

XSLT 为输入 XML 中的每个分隔符位置分配变量

在我的 XSLT 中,我需要将值分配给名为 FODepartment_LX 的变量,其中 X 表示从最左侧分隔符开始的分隔符 (+) 的位置,最大位置为 10。如果...

回答 1 投票 0

XSLT 1.0 追踪 XML 对象的继承树

我正在编写一个 XSLT 以将 XML 模式转换为 Python 类。该模式具有深入七到八个类的深层继承树,我需要从...开始编写输出

回答 1 投票 0

XSLT concat,翻译为大写

我正在尝试使用以下编码在 XSLT 中连接并转换为大写: 然而,它...

回答 1 投票 0

XSLT 1.0 复制并删除节点

我必须复制一个节点(Set_Item/ForwarderReferenceNumber)以防倍增,然后删除我们从中获取值的节点“Set_Item”。 找到相同的 Set_Item(但不同...

回答 1 投票 0

如何使用 XSL 1.0 分割文件路径

我们的测试执行人员使用样式表来生成测试报告。我们正在努力定制该报告。 由于对 XSL 和 Xpath 的了解有限,我正在尝试获取文件 pat 的各个组件...

回答 1 投票 0

使用 xslt 从 Excel 的 xml 文件中的 CRLF 输入创建 LF 输出时出现问题

我有一些 XML,我想将其转换为 Excel 将在表中打开的 XML。 但是,我的一些源数据使用字符串 表示 CRLF 并创建一个新行。 我明白...

回答 2 投票 0

类似项目的按键分组XSLT1.0

强文字 我需要对不同级别的 Itemno 进行分组 前任: 1级:8000000377 - 1 8000000376 - 1 8000000378 - 2 8000000373 - 1 8000000371 - 1 2级:8000000373 - 2 ...

回答 1 投票 0


XSLT 生成具有多个默认名称空间的文档

我正在尝试生成以下形式的 XML 文档: 我正在尝试生成以下形式的 XML 文档: <?xml version="1.0" encoding="utf-8"?> <Root xmlns="http://a.example.com"> <Header xmlns="http://b.example.com"> <Fr> <OrgId> <Id>hello</Id> </OrgId> </Fr> <To> <OrgId> <Id>goodbye</Id> </OrgId> </To> </Header> </Root> 我有以下 XSLT: 请注意,这是 XSLT 1.0,因为我使用的是 .Net(.Net Framework) <?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="xml" indent="yes"/> <xsl:template match="/"> <Root xmlns="http://a.example.com"> <Header xmlns="http://b.example.com"> <Fr> <xsl:apply-templates select="/Trades"> <xsl:with-param name="Id">hello</xsl:with-param> </xsl:apply-templates> </Fr> <To> <xsl:apply-templates select="/Trades"> <xsl:with-param name="Id">goodbye</xsl:with-param> </xsl:apply-templates> </To> </Header> </Root> </xsl:template> <xsl:template match="/Trades"> <xsl:param name="Id" /> <OrgId> <Id> <xsl:value-of select="$Id"/> </Id> </OrgId> </xsl:template> </xsl:stylesheet> 但这会生成以下 XML,该 XML 无法针对第 3 方 XSD 进行验证 <?xml version="1.0" encoding="utf-8"?> <Root xmlns="http://a.example.com"> <Header xmlns="http://b.example.com"> <Fr> <OrgId xmlns=""> <Id>hello</Id> </OrgId> </Fr> <To> <OrgId xmlns=""> <Id>goodbye</Id> </OrgId> </To> </Header> </Root> 问题是 OrgId xmlns=""。 为什么默认命名空间被显式重置? 我提出的针对 XSD 进行验证的解决方案如下: <?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="xml" indent="yes"/> <xsl:template match="/"> <Root xmlns="http://a.example.com"> <Header xmlns="http://b.example.com"> <Fr> <xsl:apply-templates select="/Trades"> <xsl:with-param name="Id">hellox</xsl:with-param> <xsl:with-param name="namespace">http://b.example.com</xsl:with-param> </xsl:apply-templates> </Fr> <To> <xsl:apply-templates select="/Trades"> <xsl:with-param name="Id">goodbye</xsl:with-param> <xsl:with-param name="namespace">http://b.example.com</xsl:with-param> </xsl:apply-templates> </To> </Header> </Root> </xsl:template> <xsl:template match="/Trades"> <xsl:param name="Id" /> <xsl:param name="namespace" /> <xsl:element name="a:OrgId" namespace="{$namespace}"> <xsl:element name="a:Id" namespace="{$namespace}"> <xsl:value-of select="$Id"/> </xsl:element> </xsl:element> </xsl:template> </xsl:stylesheet> 这会生成一个 XML 文档: <?xml version="1.0" encoding="utf-8"?> <Root xmlns="http://a.example.com"> <Header xmlns="http://b.example.com"> <Fr> <a:OrgId xmlns:a="http://b.example.com"> <a:Id>hellox</a:Id> </a:OrgId> </Fr> <To> <a:OrgId xmlns:a="http://b.example.com"> <a:Id>goodbye</a:Id> </a:OrgId> </To> </Header> </Root> 这是可以接受的,因为它针对 XSD 进行验证,但必须将命名空间传递给模板,并且模板中的所有子元素都需要具有前缀命名空间,这感觉不必要的复杂。 看看这是否适合你(我无法在没有 inout 的情况下测试它): <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns="http://b.example.com"> <xsl:output method="xml" indent="yes"/> <xsl:template match="/"> <Root xmlns="http://a.example.com"> <Header xmlns="http://b.example.com"> <Fr> <xsl:apply-templates select="/Trades"> <xsl:with-param name="Id">hello</xsl:with-param> </xsl:apply-templates> </Fr> <To> <xsl:apply-templates select="/Trades"> <xsl:with-param name="Id">goodbye</xsl:with-param> </xsl:apply-templates> </To> </Header> </Root> </xsl:template> <xsl:template match="/Trades"> <xsl:param name="Id" /> <OrgId> <Id> <xsl:value-of select="$Id"/> </Id> </OrgId> </xsl:template> </xsl:stylesheet>

回答 1 投票 0

从 xml 中删除命名空间

下面是我试图将其转换为另一个没有命名空间的 xml 的输入 XML。我尝试删除命名空间,但它不起作用。下面提供了请求所需的所有详细信息。

回答 1 投票 0

复制 XML 并比较节点 ID,如果不匹配,则不复制节点

测试以下 XSLT 时出现错误消息。 测试以下 XSLT 时出现错误消息。 <?xml version="1.0" encoding="UTF-8"?> <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:multimap="http://sap.com/xi/XI/SplitAndMerge" xmlns:n0="http://sap.com/xi/SAPGlobal20/Global"> <!-- Definiere Variablen --> <xsl:variable name="ItemID" select="/multimap:Messages/multimap:Message1/n0:ServiceRequestFollowUpDocumentReplicationRequest/ServiceRequestFollowUpDocumentReplicateRequestMessage/ServiceRequest/Item/ID"/> <xsl:variable name="ServiceRequestItemID" select="/multimap:Messages/multimap:Message4/multimap:ServiceRequestItem"/> <!-- Kopiere das gesamte Dokument --> <xsl:template match="node() | @*"> <xsl:copy> <xsl:apply-templates select="node() | @*"/> </xsl:copy> </xsl:template> <!-- Überspringe ServiceRequestItem, deren ID nicht im ServiceRequest-Element ist --> <xsl:template match="multimap:ServiceRequestItem[not(ID = $ItemID)]"/> </xsl:stylesheet> 这是我的 XML: <multimap:Messages xmlns:multimap="http://sap.com/xi/XI/SplitAndMerge"> <multimap:Message1> <n0:ServiceRequestFollowUpDocumentReplicationRequest xmlns:n0="http://sap.com/xi/SAPGlobal20/Global" xmlns:prx="urn:sap.com:proxy:LV9"> <ServiceRequestFollowUpDocumentReplicateRequestMessage> <ServiceRequest actionCode="01" itemListCompleteTransmissionIndicator="true"> <Item actionCode="01"> <ID>10</ID> </Item> <Item actionCode="01"> <ID>80</ID> </Item> </ServiceRequest> </ServiceRequestFollowUpDocumentReplicateRequestMessage> </n0:ServiceRequestFollowUpDocumentReplicationRequest> </multimap:Message1> <multimap:Message4> <ServiceRequestItemCollection> <ServiceRequestItem> <ID>10</ID> </ServiceRequestItem> <ServiceRequestItem> <ID>80</ID> </ServiceRequestItem> <ServiceRequestItem> <ID>30</ID> </ServiceRequestItem> </ServiceRequestItemCollection> </multimap:Message4> </multimap:Messages> 我想要 XML 的副本,但只有当 ID 也包含在 ServiceRequestItem 节点中时,才应复制 Item 中的节点。 您收到错误,因为在 XSLT 1.0 中,匹配模式无法引用变量。 您可以通过以下方式优雅而有效地避免这种情况: XSLT 1.0 <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:multimap="http://sap.com/xi/XI/SplitAndMerge" xmlns:n0="http://sap.com/xi/SAPGlobal20/Global"> <xsl:output method="xml" version="1.0" encoding="UTF-8" indent="yes"/> <xsl:strip-space elements="*"/> <xsl:key name="keepItems" match="n0:ServiceRequestFollowUpDocumentReplicationRequest/ServiceRequestFollowUpDocumentReplicateRequestMessage/ServiceRequest/Item" use="ID" /> <!-- identity transform --> <xsl:template match="@*|node()"> <xsl:copy> <xsl:apply-templates select="@*|node()"/> </xsl:copy> </xsl:template> <!-- Überspringe ServiceRequestItem, deren ID nicht im ServiceRequest-Element ist --> <xsl:template match="ServiceRequestItem[not(key('keepItems', ID))]"/> </xsl:stylesheet>

回答 1 投票 0

慕尼黑分组/求和完成后如何创建总计摘要

我一直在尝试找出如何使用 Muenchian 分组对分组和求和值进行总计,但无济于事。 这是我的分组键: 我一直在尝试找出如何使用 Muenchian 分组对分组和求和值进行总计,但无济于事。 这是我的分组键: <xsl:key name="kRcdGroup" match="Export/Record" use="concat(generate-id(..), AccountNo, Description, vb:GetOverrideCode(DeptOverride,LedgerCode))"/> vb 函数仅返回传递给它的两个值中的一个或另一个。 我创建了这个变量作为求和媒介: <xsl:variable name="vkeyGroup" select="key('kRcdGroup', concat(generate-id(..), AccountNo, Description, vb:GetOverrideCode(DeptOverride,LedgerCode))) "/> 这是一个管道分隔的文本输出,我正在 for-each 循环中进行求和: <xsl:for-each select="Export/Record[generate-id() = generate-id(key('kRcdGroup',concat(generate-id(..), AccountNo, Description, vb:GetOverrideCode(DeptOverride,LedgerCode)))[1])] "> 到目前为止,输出工作正常。但是,客户端要求添加页脚。他们想要所有这些分组/求和值的摘要。 此输出用于将数据上传到数据库,因此它必须采用这种荒谬的格式。 01 是页眉,02 是详细输出,99 是页脚。 (注意:页眉之后或页脚之前不应该有空行,我必须这样做才能更具可读性。) 01|CA|付款2082027|| 02|1|1|||23|0736|0704010000|0736131554|PAYR||||0|0704010000||||V0|13864.08|CAD||||CAN Flex CASH_0001|||CP||||| CAN Flex 现金||40|0736|0736131554|||||||||||||||||||||||||||||||||| 02|1|2|||23|0736|0701000000|0736131554|PAYR||||0|0701000000||||V0|149480.33|CAD||||CAN奖金_0002|||CP|||||CAN奖金||40|0736|0736131554||||||||||||||||||||||||||||||||| 02|1|3|||23|0736|0700793000|0736131554|PAYR||||0|0700793000||||V0|74941.42|CAD||||CAN TXB RRSP_0003|||CP|||||CAN TXB RRSP||40|0736|0736131554||||||||||||||||||||||||||||||||| 99|238285.83 这里是 xml 的几个节点: <Export> <Record> <AccountNo><![CDATA[0700103000]]></AccountNo> <Onsite></Onsite> <Amount> 47916.63</Amount> <PayDate>15062023</PayDate> <PayDateCA>06152023</PayDateCA> <PPStartDate>20230601</PPStartDate> <PPEndDate>06/15/2023</PPEndDate> <PPEndDateCA>20230615</PPEndDateCA> <Description><![CDATA[CAN Regular ]]></Description> <Category>Earning</Category> <Desc><![CDATA[CAN Regular]]></Desc> <EmpNumber>6001237</EmpNumber> <EmpFirstName><![CDATA[Elia]]></EmpFirstName> <EmpLastName><![CDATA[DiLoreto]]></EmpLastName> <DeptName>0736131554</DeptName> <DeptLedgerCode></DeptLedgerCode> <OnSiteName><![CDATA[0736131554 - Toronto Office - 0736]]></OnSiteName> <SiteCode><![CDATA[]]></SiteCode> <DeptOverride></DeptOverride> <LedgerCode><![CDATA[0736131554]]></LedgerCode> <Constant1>ERN</Constant1> <Constant2></Constant2> <Constant3></Constant3> <Constant4></Constant4> <Constant5></Constant5> <Filler1><![CDATA[ ]]></Filler1> <Filler2><![CDATA[ ]]></Filler2> <LegalEntity>Deutsche Bank AG CA</LegalEntity> <EmpType>FT</EmpType> </Record> <Record> <AccountNo><![CDATA[0700793000]]></AccountNo> <Onsite></Onsite> <Amount> 8833.12</Amount> <PayDate>15062023</PayDate> <PayDateCA>06152023</PayDateCA> <PPStartDate>20230601</PPStartDate> <PPEndDate>06/15/2023</PPEndDate> <PPEndDateCA>20230615</PPEndDateCA> <Description><![CDATA[CAN TXB RRSP ]]></Description> <Category>Earning</Category> <Desc><![CDATA[CAN TXB RRSP]]></Desc> <EmpNumber>6001237</EmpNumber> <EmpFirstName><![CDATA[Elia]]></EmpFirstName> <EmpLastName><![CDATA[DiLoreto]]></EmpLastName> <DeptName>0736131554</DeptName> <DeptLedgerCode></DeptLedgerCode> <OnSiteName><![CDATA[0736131554 - Toronto Office - 0736]]></OnSiteName> <SiteCode><![CDATA[]]></SiteCode> <DeptOverride></DeptOverride> <LedgerCode><![CDATA[0736131554]]></LedgerCode> <Constant1>MEM</Constant1> <Constant2></Constant2> <Constant3></Constant3> <Constant4></Constant4> <Constant5></Constant5> <Filler1><![CDATA[ ]]></Filler1> <Filler2><![CDATA[ ]]></Filler2> <LegalEntity>Deutsche Bank AG CA</LegalEntity> <EmpType>FT</EmpType> </Record> </Export> for-each 循环中的 Amount 值将其绝对值与指示符号的 neg (40) 或 pos (50) 标志相加。 <xsl:choose> <xsl:when test="sum($vkeyGroup/Amount) > 0"> <xsl:value-of select="format-number(sum($vkeyGroup/Amount),'#.00')"/> </xsl:when> <xsl:otherwise> <xsl:value-of select="format-number(sum($vkeyGroup/Amount)*-1,'#.00')"/> </xsl:otherwise> </xsl:choose> 我尝试创建第二个键来按支付日期汇总货币值,该值在每条记录上都相同,但由于货币值可能是正值或负值,因此在按支付日期分组时,其总和会有所不同。我需要能够总结 Amount 字段的绝对值,以便它与 for-each 循环中的值的总和相匹配。 我联系了 Jeni Tennison,但还没有收到回复——我正面临着解决这个问题的压力。任何帮助/示例将不胜感激。我正在通过你们的帮助学习,但我还有很长的路要走。接下来,我需要了解如何使用模板:)。 非常感谢,格雷格 我仍然在努力理解这里需要应用的逻辑是什么。 也许这个简化的示例可以有所帮助: XML <entries> <entry> <group>A</group> <amount>-50</amount> </entry> <entry> <group>A</group> <amount>25</amount> </entry> <entry> <group>B</group> <amount>80</amount> </entry> <entry> <group>B</group> <amount>-20</amount> </entry> <entry> <group>C</group> <amount>15</amount> </entry> </entries> 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:key name="entry-by-group" match="entry" use="group" /> <xsl:template match="/entries"> <!-- first pass --> <xsl:variable name="subtotals"> <xsl:for-each select="entry[count(. | key('entry-by-group', group)[1]) = 1]"> <subtotal group="{group}"> <xsl:variable name="subtotal" select="sum(key('entry-by-group', group)/amount)"/> <!-- output absolute value --> <xsl:value-of select="translate($subtotal, '-', '')"/> </subtotal> </xsl:for-each> </xsl:variable> <!-- final output --> <output> <xsl:copy-of select="$subtotals"/> <total> <xsl:value-of select="sum(exsl:node-set($subtotals)/subtotal)"/> </total> </output> </xsl:template> </xsl:stylesheet> 结果 <?xml version="1.0" encoding="UTF-8"?> <output> <subtotal group="A">25</subtotal> <subtotal group="B">60</subtotal> <subtotal group="C">15</subtotal> <total>100</total> </output> 这似乎遵循您描述的过程,尽管我不明白这有什么用处。

回答 1 投票 0

如何在xsl翻译中有多个“替换”特殊字符

如何用斜杠替换字符串上的所有破折号和点?我尝试使用下面的代码。 我也尝试过使用...

回答 2 投票 0

如何在 XSLT XPath 表达式中使用变量?

如何将变量传递给 XSLT XPath。例如 如何将变量传递给 XSLT XPath。例如 <ns0:UnitCode> <xsl:value-of select="//ns1:Root/InputMessagePart_1/ ns2:ServiceMasterDetailsResponse/ ns2:ServiceMasterDetailResponse[$Counter]/ ns2:BASE_UOM/text()"/> </ns0:UnitCode> 其中 Counter 是我的 XSLT 变量。 我想将变量计数器的数值传递给上面的 XSLT XPath 表达式。 如何在 XSLT 中使用变量引用 XPath 在 select 属性中,使用 $var (如您所做的那样): <xsl:value-of select="/path/to/element[@id=$var]"/> 以下是在 XSLT 中使用变量引用的一些其他方法... 匹配图案 XSLT 1.0:不允许变量match: match属性的值包含a是错误的 VariableReference. XSLT 2.0:变量允许出现在match谓词或中 模式可能以 id FO 或关键函数调用开始, 前提是要匹配的值以文字形式提供 或对变量或参数的引用,以及键名(在 key 函数的大小写)作为字符串文字提供。这些 模式永远不会匹配根不是树中的节点 文档节点。 XSLT 2.0 匹配谓词变量示例: <xsl:variable name="globalVar" select="'value'"/> <xsl:template match="abc[. = $globalVar]"> 文字结果元素 在文字结果元素中,使用属性值模板: <img src="{$var}/image.jpg"/> 元素或属性名称 在元素或属性名称中,使用 xsl:element 或 xsl:attribute 以及属性值模板: <xsl:element name="{$var}">content</xsl:element> 或 <xsl:attribute name="{$var}">content</xsl:attribute>

回答 1 投票 0

如何将变量传递给 XSLT XPath 表达式?

如何将变量传递给 XSLT XPath。例如 如何将变量传递给 XSLT XPath。例如 <ns0:UnitCode> <xsl:value-of select="//ns1:Root/InputMessagePart_1/ ns2:ServiceMasterDetailsResponse/ ns2:ServiceMasterDetailResponse[$Counter]/ ns2:BASE_UOM/text()"/> </ns0:UnitCode> 其中 Counter 是我的 XSLT 变量。 我想将变量计数器的数值传递给上面的 XSLT XPath 表达式。 如何在 XSLT 中使用变量引用 XPath 在 select 属性中,使用 $var (如您所做的那样): <xsl:value-of select="/path/to/element[@id=$var]"/> 以下是在 XSLT 中使用变量引用的一些其他方法... 匹配图案 XSLT 1.0:不允许变量match: match属性的值包含a是错误的 VariableReference。 XSLT 2.0:变量允许出现在match谓词或中 模式可能以 id FO 或关键函数调用开始, 前提是要匹配的值以文字形式提供 或对变量或参数的引用,以及键名(在 key 函数的大小写)作为字符串文字提供。这些 模式永远不会匹配根不是树中的节点 文档节点。 XSLT 2.0 匹配谓词变量示例: <xsl:variable name="globalVar" select="'value'"/> <xsl:template match="abc[. = $globalVar]"> 文字结果元素 在文字结果元素中,使用属性值模板: <img src="{$var}/image.jpg"/> 元素或属性名称 在元素或属性名称中,使用 xsl:element 或 xsl:attribute 以及属性值模板: <xsl:element name="{$var}">content</xsl:element> 或 <xsl:attribute name="{$var}">content</xsl:attribute>

回答 1 投票 0

xslt:键与 contains(text(),

我必须使用 xslt 1.0 并且我有以下 xml: 短 客户端、运行时、语言 <

回答 1 投票 0

如何在XPath-1.0中进行集合运算?

我在 SO 和其他地方看到以下内容应该有效(这个示例直接来自 O'Reilly 的 XSLT Cookbook): (:交叉点:) $set1[计数(. | $set2) = 计数($set2)] (:

回答 2 投票 0

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