xslt 相关问题

XSLT是XML的一种转换语言,旨在将结构化文档转换为其他格式(如XML,HTML和纯文本,或者在XSLT 3,JSON中)。问题应该根据需要使用xslt-1.0,xslt-2.0或xslt-3.0标记之一。

如何使用 DITA Open Toolkit 检索和使用 AntennaHouse PDF 生成中的章节编号?

我是样式表开发的新手,我的方法仍然是反复试验。 目前我正在尝试检索章节的编号(styleshe 中已经有一个模板...

回答 1 投票 0

sep=";"语句破坏了 XSL 生成的 CSV 文件中的 utf8 BOM

我目前正在使用 XSLT 开发 CSV 导出。在我的例子中,CSV 文件将与 Excel 一起使用 %99%,因此我必须考虑 Excel 的行为。 我的第一个问题是......中的德语特殊字符

回答 4 投票 0

子节点的 XML 到 CSV

下面的 XSLT 代码能够从 XML 转换为带引号的 CSV,但子节点(详细信息)出现在同一行中。 XML输入 下面的 XSLT 代码能够从 XML 转换为带引号的 CSV,但子节点(详细信息)出现在同一行中。 XML 输入 <?xml version="1.0" encoding="UTF-8"?> <Root> <Records> <TrRecords> <RecordID>0123</RecordID> <SequnceNumber>00001</SequnceNumber> <TNumber>00001</TNumber> <System>01</System> <Amount>4956.00</Amount> <Reference>T</Reference> <Account>89768</Account> <Name>bdi</Name> <Other2/> <Other3/> <Details> <RecordID>1234</RecordID> <SequnceNumber>00001</SequnceNumber> <TNumber>00001</TNumber> <Number>TI</Number> <InvoiceDate>2024-05-05</InvoiceDate> <InvoiceDescription/> <InvoiceAmount>10.00</InvoiceAmount> </Details> </TrRecords> <TrRecords> <RecordID>0123</RecordID> <SequnceNumber>00001</SequnceNumber> <TNumber>00002</TNumber> <System>01</System> <Amount>523.00</Amount> <Reference>TI</Reference> <Account>18907</Account> <Name>elci</Name> <Other2/> <Other3/> <Details> <RecordID>1234</RecordID> <SequnceNumber>00001</SequnceNumber> <TNumber>00001</TNumber> <Number>TIR</Number> <InvoiceDate>2024-08-17</InvoiceDate> <InvoiceDescription/> <InvoiceAmount>5245.00</InvoiceAmount> </Details> </TrRecords> <TrRecords> <RecordID>0123</RecordID> <Number>00001</Number> <TNumber>00003</TNumber> <System>01</System> <Amount>1180.00</Amount> <Reference>EMI</Reference> <AccountNo>0936201002941</AccountNo> <Other2/> <Other3/> <Details> <RecordID>1234</RecordID> <SequnceNumber>00001</SequnceNumber> <TNumber>00001</TNumber> <Number>Tac</Number> <InvoiceDate>2024-08-17</InvoiceDate> <InvoiceDescription/> <InvoiceAmount>1180.00</InvoiceAmount> </Details> </TrRecords> </Records> </Root> XSLT 代码 <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"> <xsl:output method="text" encoding="utf-8" /> <xsl:param name="delim" select="','" /> <xsl:param name="quote" select="'&quot;'" /> <xsl:param name="break" select="'&#xA;'" /> <xsl:template match="/Root"> <xsl:apply-templates select="Records/TrRecords" /> </xsl:template> <xsl:template match="TrRecords"> <xsl:apply-templates /> <xsl:if test="following-sibling::*"> <xsl:value-of select="$break" /> </xsl:if> <xsl:for-each select="Details"> <xsl:if test="following-sibling::*"> <xsl:value-of select="$break" /> </xsl:if> </xsl:for-each> </xsl:template> <xsl:template match="*"> <!-- remove normalize-space() --> <xsl:value-of select="concat($quote, normalize-space(), $quote)" /> <xsl:if test="following-sibling::*"> <xsl:value-of select="$delim" /> </xsl:if> </xsl:template> <xsl:template match="text()" /> </xsl:stylesheet> 输出 "0123","00001","00001","01","4956.00","T","89768","bdi","","","","","","", “”、“”、“”、“1234 00001 00001 TI 2024-05-05 10.00” "0123","00001","00002","01","523.00","TI","18907","elci","","","","","","", "","","","1234 00001 00001 TIR 2024-08-17 5245.00" "0123","00001","00003","01","1180.00","EMI","0936201002941","","","","","","",""," ","","1234 00001 00001 塔克 2024-08-17 1180.00" 在 1234 的每一行中,值应换行并用引号引起来。你能帮我解决这个问题吗? 问候, 贾纳尔丹 尝试类似: <xsl:stylesheet version="2.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"> <xsl:output method="text" encoding="utf-8" /> <xsl:param name="delim" select="','" /> <xsl:param name="quote" select="'&quot;'" /> <xsl:param name="break" select="'&#xA;'" /> <xsl:template match="/Root"> <xsl:apply-templates select="Records/TrRecords" /> </xsl:template> <xsl:template match="TrRecords"> <xsl:apply-templates select="* except Details"/> <xsl:value-of select="$break" /> <xsl:apply-templates select="Details/*"/> <xsl:if test="position()!=last()"> <xsl:value-of select="$break" /> </xsl:if> </xsl:template> <xsl:template match="*"> <xsl:value-of select="concat($quote, normalize-space(), $quote)" /> <xsl:if test="position()!=last()"> <xsl:value-of select="$delim" /> </xsl:if> </xsl:template> </xsl:stylesheet>

回答 1 投票 0

标头值在每个循环中出现两次

由于我得到了第二个标题两次 由于 ,我两次获得第二个标头 输入提要具有多个元素,因为我需要根据 Plan 值设置两个标题 <Details> <Detail> <Code>001</Code> <Type>Alt</Type> <Plan>N</Plan> </Detail> <Detail> <Code>002</Code> <Type>Alt</Type> <Plan>Y</Plan> </Detail> <Detail> <Code>003</Code> <Type>Alt</Type> <Plan>Y</Plan> </Detail> <Detail> <Code>004</Code> <Type>Alt</Type> <Plan>N</Plan> </Detail> <Detail> <Code>005</Code> <Type>Alt</Type> <Plan>N</Plan> </Detail> </Details> 我尝试过的Xsl代码如下: <?xml version="1.0" encoding="UTF-8" ?> <xsl:transform xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="2.0"> <xsl:output method="html" doctype-public="XSLT-compat" omit-xml-declaration="yes" encoding="UTF-8" indent="yes" /> <xsl:template match="@*|node()"> <xsl:copy> <xsl:apply-templates select="@*|node()"/> </xsl:copy> </xsl:template> <xsl:template match="Details"> <table> <tbody> <xsl:for-each select="Detail"> <xsl:sort select="Plan" order="ascending"/> <xsl:choose> <xsl:when test="position() = 1 and current()/Plan='N'"> <row> <entry> <p><b>Plan A</b></p> </entry> </row> </xsl:when> <xsl:when test="position() != 1 and current()/Plan='Y'[1]"> <row> <entry> <p><b>Plan B</b></p> </entry> </row> </xsl:when> </xsl:choose> <row> <entry> <p> <xsl:value-of select="current()/Code"/> </p> </entry> </row> </xsl:for-each> </tbody> </table> </xsl:template> </xsl:transform> 对于我在xsl中提到的计划B标头来选择第一行,但是每个代码值都会出现两次,预期输出应该是 <table> <tbody> <row> <entry> <p><b>Plan A</b></p> </entry> </row> <row> <entry> <p>001</p> </entry> </row> <row> <entry> <p>004</p> </entry> </row> <row> <entry> <p>005</p> </entry> </row> <row> <entry> <p><b>Plan B</b></p> </entry> </row> <row> <entry> <p>002</p> </entry> </row> <row> <entry> <p>003</p> </entry> </row> </tbody> </table> 我想我会采取不同的方法: <xsl:stylesheet version="2.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"> <xsl:output method="xml" omit-xml-declaration="yes" indent="yes"/> <xsl:template match="/Details"> <table> <tbody> <xsl:for-each-group select="Detail" group-by="Plan"> <xsl:sort select="Plan"/> <row> <entry> <p> <b> <xsl:value-of select="if(Plan='N') then 'Plan A' else 'Plan B'"/> </b> </p> </entry> </row> <xsl:for-each select="current-group()"> <row> <entry> <p> <xsl:value-of select="Code"/> </p> </entry> </row> </xsl:for-each> </xsl:for-each-group> </tbody> </table> </xsl:template> </xsl:stylesheet>

回答 1 投票 0

XSLT:应用 xml 转换,然后进行另一个文本转换

尽管有多个线程解释了在同一 xslt 文件中使用多个模板,但我找不到解决我的问题的解决方案。 我想对我的......应用两个转换

回答 1 投票 0

XSLT:根据条件求和并删除xml节点

我目前正在进行一项棘手的转换,其中我需要在文章出现两次时对游戏文章的价格值进行求和,并从输出中排除第二篇文章。

回答 1 投票 0

如何在 XML 文件中嵌入 svg 图像并将其转换为 HTML

我正在使用 XML 文件来存储一些生成的数据和绘图。这些图是 svg 图像,我想使用 XSLT 将 XML 文件转换为 HTML,并内联嵌入 SVG 图。是吗

回答 1 投票 0

如何修复错误:文档中根元素后面的标记必须格式正确

我将代码放入 XML 验证网站,它给出了以下错误: 第 8 行:4 文档中根元素后面的标记必须格式正确。 有问题的线路...

回答 3 投票 0

使用 XSLT 从 XML 中删除空标签(空格除外)

我希望使用 xslt 从 xml 中删除所有空白标签,除非标签包含空格。此外,对换行符等不应有影响。xml 应按原样复制,除了...

回答 1 投票 0

通过 Saxon XSLT API 从 Java 中的 XSLT 过滤数组?

原标题:XSLT“包含”方法未按预期工作 我有这个xml: ...

回答 1 投票 0

XSLT For-Each 包装 div 中的每第 n 个项目

我有一系列节点,它们是父节点的直接子节点,我想循环这些节点,但将它们包装在 4 个“组”中。我可能没有非常清楚地表述这一点,所以这可能会有所帮助.. .

回答 3 投票 0

XSLT“包含”方法无法按预期工作

我有这个xml: 我有这个xml: <?xml version="1.0" encoding="UTF-8"?> <Document> <tag-one> <tag-two> <tag-three> <tag-four> <tag-five> <tag-six> <tag-seven> <tag-eight> <tag-nine> <id-tag>valid_id</id-tag> </tag-nine> </tag-eight> </tag-seven> </tag-six> </tag-five> </tag-four> </tag-three> </tag-two> <tag-two> <tag-three> <tag-four> <tag-five> <tag-six> <tag-seven> <tag-eight> <tag-nine> <id-tag>invalid_id-invalid_kg</id-tag> </tag-nine> </tag-eight> </tag-seven> </tag-six> </tag-five> </tag-four> </tag-three> </tag-two> </tag-one> </Document> 我正在尝试构建一个 XSLT 文件,如果相应的 tag-two 包含在列表中,则过滤掉 id-tag 元素 <?xml version="1.0" encoding="UTF-8"?> <xsl:transform xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" exclude-result-prefixes="#all" version="3.0"> <xsl:param name="invalidIds"/> <xsl:template match="@*|node()"> <xsl:copy> <xsl:apply-templates select="@*|node()"/> </xsl:copy> </xsl:template> <xsl:template match="tag-two[contains($invalidIds, tag-three/tag-four/tag-five//*[local-name()='id-tag'])]"> </xsl:template> </xsl:transform> 我使用 saxon 库将 invalidIds 作为 java 代码中的数组列表传递: List<String> idList = Arrays.asList("invalid_id-invalid_kg"); // omitted rest of the code for brevity // Map.of(new QName("invalidIds"), new XdmAtomicValue(idList.toString())) 当我在 xslt 中打印出 invalidIds 值时,我得到了:[invalid_id-invalid_kg]。 问题是它过滤了两个tag-two,因为它看起来像contains方法充当“字符串”包含,而不是“数组”包含,这意味着“valid_id”匹配条件...你有吗知道我该如何解决这个问题吗? 在您的 Java 列表上使用 https://www.saxonica.com/html/documentation12/javadoc/net/sf/saxon/s9api/XdmValue.html#makeSequence(java.lang.Iterable) Map.of(new QName("invalidIds"), XdmValue.makeSequence(idList))。

回答 1 投票 0

从 XML 生成包含不同数据、各自计数和总和的 XSLT

以下 XML 是我需要帮助为此创建 XLST 文件的项目示例: ...

回答 1 投票 0

不同元素代码的计数应显示在末尾

我总共有 10 个详细信息元素,如下所示,因为我想根据指标计划值拆分和排列代码元素值。 0... 我总共有 10 个 Detail 元素,如下所示,因为我想根据指标 Code 值拆分和排列 Plan 元素值。 <Details> <Detail> <Code>001</Code> <Type>Alt</Type> <Plan>N</Plan> </Detail> <Detail> <Code>002</Code> <Type>Alt</Type> <Plan>N</Plan> </Detail> <Detail> <Code>003</Code> <Type>Alt</Type> <Plan>N</Plan> </Detail> <Detail> <Code>004</Code> <Type>Alt</Type> <Plan>N</Plan> </Detail> <Detail> <Code>005</Code> <Type>Alt</Type> <Plan>N</Plan> </Detail> <Detail> <Code>006</Code> <Type>Alt</Type> <Plan>Y</Plan> </Detail> <Detail> <Code>007</Code> <Type>Alt</Type> <Plan>Y</Plan> </Detail> <Detail> <Code>008</Code> <Type>Alt</Type> <Plan>N</Plan> </Detail> <Detail> <Code>009</Code> <Type>Alt</Type> <Plan>N</Plan> </Detail> <Detail> <Code>010</Code> <Type>Alt</Type> <Plan>N</Plan> </Detail> </Details> 每页我只需要 5 个代码或行来允许,因为我希望 Plan='N' 代码应该放在第一位,Plan='Y' 代码应该放在下面,我已经尝试了下面的代码 <xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:xs="http://www.w3.org/2001/XMLSchema" version="3.0" exclude-result-prefixes="xs"> <xsl:template match="Details"> <xsl:call-template name="Table_Left"> <xsl:with-param name="start_row" as="xs:integer">1</xsl:with-param> <xsl:with-param name="end_row" as="xs:integer">10</xsl:with-param> </xsl:call-template> </xsl:template> <xsl:template name="Table_Left"> <xsl:param name="start_row" as="xs:integer">0</xsl:param> <xsl:param name="end_row" as="xs:integer">0</xsl:param> <xsl:variable name="Details" select="Details"/> <xsl:variable name="total_rows"> <xsl:value-of select="count($Details//Detail[Type = 'Alt'])"/> </xsl:variable> <xsl:variable name="sorted_plans_alt" as="element()"> <sorted_plans> <xsl:for-each select="$Details//Detail[Type = 'Alt']"> <xsl:sort select=".//Detail[Type = 'Alt']" order="ascending" data-type="number"/> <xsl:sequence select="."/> </xsl:for-each> </sorted_plans> </xsl:variable> <xsl:variable name="plans_subset"> <xsl:sequence select=" subsequence($sorted_plans_alt//Detail[Type = 'Alt'], $start_row, $end_row)" /> </xsl:variable> <xsl:variable name="preceding_plan" as="element()"> <preceding_plan> <xsl:choose> <xsl:when test="$start_row = 1"> <empty/> </xsl:when> <xsl:otherwise> <xsl:sequence select="subsequence($sorted_plans_alt//Detail[Type = 'Alt'], $start_row - 1, 1)" /> </xsl:otherwise> </xsl:choose> </preceding_plan> </xsl:variable> <xsl:variable name="rows_to_output" as="xs:integer"> <xsl:variable name="number_of_r_plans" as="xs:integer"> <xsl:value-of select="count($Details//Detail[Type = 'Alt'])"/> </xsl:variable> <xsl:choose> <xsl:when test="$number_of_r_plans > 0"> <xsl:value-of select="$end_row - 5"/> </xsl:when> <xsl:otherwise> <xsl:value-of select="$end_row"/> </xsl:otherwise> </xsl:choose> </xsl:variable> <xsl:variable name="left_table" as="element()"> <xsl:for-each select="($plans_subset//Detail[Type = 'Alt'][Plan='N'])[position() &lt;= $rows_to_output]"> <xsl:value-of select="current()/Code"/> </xsl:for-each> <xsl:for-each select="($plans_subset//Detail[Type = 'Alt'][Plan='Y'])[position() &lt;= $rows_to_output]"> <xsl:value-of select="current()/Code"/> </xsl:for-each> </xsl:variable> <xsl:variable name="right_table"> <topic id="topic_1" xml:lang="en-US"> <xsl:apply-templates select="$left_table/*"/> </topic> </xsl:variable> <xsl:sequence select="$right_table"/> <xsl:choose> <xsl:when test="$start_row + $rows_to_output &lt;= $total_rows"> <xsl:call-template name="Table_Left"> <xsl:with-param name="start_row" as="xs:integer" select="$start_row + $rows_to_output"/> <xsl:with-param name="end_row" as="xs:integer" select="$end_row"/> </xsl:call-template> </xsl:when> <xsl:when test="$start_row = 999"/> </xsl:choose> </xsl:template> </xsl:stylesheet> 在下面的输出中,我在第一页中得到 7 个代码(即使在 xsl 中提到,每页也只有 5 个代码)。但我也收到了 Plan='Y'(006 和 007)代码。 1st page 2nd page 001 008 002 009 003 010 004 005 006 007 预期输出如下,第一页有 5 个代码,第二页有剩余代码。我需要 Plan=N 代码应该放在第一位,Plan=Y 代码应该放在后面 1st page 2nd page 001 008 002 009 003 010 004 006 005 007 预期输出的格式不清楚。 尝试以下方法: <xsl:stylesheet version="2.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"> <xsl:output method="xml" indent="yes"/> <xsl:template match="/Details"> <!-- sort plan N first --> <xsl:variable name="sorted"> <xsl:perform-sort> <xsl:sort select="Plan='Y'"/> <xsl:sequence select="Detail"/> </xsl:perform-sort> </xsl:variable> <!-- output in groups of 5 per page --> <output> <xsl:for-each-group select="$sorted/Detail" group-adjacent="(position() - 1) idiv 5"> <page> <xsl:copy-of select="current-group()/Code"/> </page> </xsl:for-each-group> </output> </xsl:template> </xsl:stylesheet> 使用提供的输入,输出将是: <?xml version="1.0" encoding="UTF-8"?> <output> <page> <Code>001</Code> <Code>002</Code> <Code>003</Code> <Code>004</Code> <Code>005</Code> </page> <page> <Code>008</Code> <Code>009</Code> <Code>010</Code> <Code>006</Code> <Code>007</Code> </page> </output> 我不清楚你到底想要什么输出,但这里有一些关于你的代码的观察结果,其中一些纯粹是风格上的。 <xsl:with-param name="start_row" as="xs:integer">1</xsl:with-param> 使用 <xsl:with-param name="start_row" as="xs:integer" select="1"/> 它避免了类型转换(从文本节点到整数)。有些人主张始终使用 as 子句,但我会将其留在这里,因为很明显 select="1" 会给您一个 xs:integer。 <xsl:variable name="total_rows"> <xsl:value-of select="count($Details//Detail[Type = 'Alt'])"/> </xsl:variable> 使用 <xsl:variable name="total_rows" select="count($Details/Detail[Type = 'Alt'])"/> 您确实不想在这里构建 XML 文档,您想计算一个整数。 当您知道 // 元素将是 Detail 的直接子元素时,搜索所有后代 (Details) 是没有意义的。 <xsl:for-each select="$Details//Detail[Type = 'Alt']"> <xsl:sort select=".//Detail[Type = 'Alt']" 这是错误的。排序键是相对于您要排序的元素计算的,您的选择表达式不会选择任何内容。我不知道如何纠正它,因为我不知道你真正想要排序的内容。 <xsl:variable name="left_table" as="element()"> <xsl:for-each select="($plans_subset//Detail[Type = 'Alt'][Plan='N'])[position() &lt;= $rows_to_output]"> <xsl:value-of select="current()/Code"/> </xsl:for-each> <xsl:for-each select="($plans_subset//Detail[Type = 'Alt'][Plan='Y'])[position() &lt;= $rows_to_output]"> <xsl:value-of select="current()/Code"/> </xsl:for-each> </xsl:variable> 这是错误的,因为您的变量将由文本节点组成(由 xsl:value-of 生成,而不是元素)。也许您有意xsl:copy-of。 current()/Code 是 Code 的一种冗长说法。 恐怕这些都是细节问题,我怀疑我只见树木不见森林。我怀疑有一些更根本的问题;我不明白你想要实现什么,但我在需求中没有看到任何表明递归命名模板是实现它的适当方法。

回答 2 投票 0

如何将单行中的值分成多行,以及在xslt 3.0中删除重复项

输入: RIO_CBI_TE01_1 RIO_CBI_TE01_1 RIO_ATC_TE01_1 RIO_ATC_TE01_1 RIO_ATC_TE01_1 RIO_ATC_TE01_1 RIO_ATC_TE01_1 RIO_ATC_TE01_1 RIO_ATC_TE01_1 RIO_ATC_TE01_1 RIO_ATC_TE01 _1 RIO_ATC_TE01_1...

回答 1 投票 0

如何将元素的所有值存储在变量中,然后在 xslt 中检查该变量的特定值

我有一个 xml 文件,其中包含两个元素“employeeID”和“managerID”。我想检查employeeID 中的任何值中是否不存在managerID,然后将managerID 的值替换为“Not Found”。 ...

回答 1 投票 0

替换 xslt 中的特殊字符 ' 和 "

我需要使用 xslt 替换字符 ' 和 "。我需要在 xml 文件中的整个文本中替换它们。' 字符应替换为 " 但仅限于表达式,在 ' 是 o 的一部分的情况下...

回答 1 投票 0

PHP - 是否可以使用 xslt 转换将 XML 文件转换为 XSL 文件

我正在尝试使用 xsl 转换基于 XML 配置文件生成 XSL 文件。 这是我的输入。 我正在尝试使用 xsl 转换基于 XML 配置文件生成 XSL 文件。 这是我的意见。 <front> <sample1/> <sample2/> <sample3> <item1/> <item2/> <item3/> <item4/> </sample3> <sample4/> </front> 我期待得到像这样的 xsl 文件, <xsl:template match="//div[@class='front']"> <xsl:apply-templates select=".//*[@class='sample1']"/> <xsl:apply-templates select=".//*[@class='sample2']"/> <xsl:apply-templates select=".//*[@class='sample3']"/> <xsl:apply-templates select=".//*[@class='sample4']"/> </xsl:template> <xsl:template match="//*[@class='sample3']"> <xsl:apply-templates select=".//*[@class='item1']"/> <xsl:apply-templates select=".//*[@class='item2']"/> <xsl:apply-templates select=".//*[@class='item3']"/> <xsl:apply-templates select=".//*[@class='item4']"/> </xsl:template> 可以使用xsl转换来完成吗?主要思想是每次我在配置文件中进行更改时,我不需要编写 xsl 文件。它应该被生成。如果我做出改变, <front> <sample1/> <sample2/> <sample4/> <sample3> <item1/> <item2/> <item4/> <item3/> </sample3> </front> xsl 应该是, <xsl:template match="//div[@class='front']"> <xsl:apply-templates select=".//*[@class='sample1']"/> <xsl:apply-templates select=".//*[@class='sample2']"/> <xsl:apply-templates select=".//*[@class='sample4']"/> <xsl:apply-templates select=".//*[@class='sample3']"/> </xsl:template> <xsl:template match="//*[@class='sample3']"> <xsl:apply-templates select=".//*[@class='item1']"/> <xsl:apply-templates select=".//*[@class='item2']"/> <xsl:apply-templates select=".//*[@class='item4']"/> <xsl:apply-templates select=".//*[@class='item3']"/> </xsl:template> 任何帮助将不胜感激。预先感谢! XSLT 规范本身中有一个使用 XSLT 生成样式表的示例:https://www.w3.org/TR/xslt/#element-namespace-alias 尝试类似: XSLT 1.0 <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:axsl="http://www.w3.org/1999/XSL/TransformAlias"> <xsl:output method="xml" version="1.0" encoding="UTF-8" indent="yes"/> <xsl:strip-space elements="*"/> <xsl:namespace-alias stylesheet-prefix="axsl" result-prefix="xsl"/> <xsl:template match="/"> <axsl:stylesheet version="1.0"> <xsl:apply-templates/> </axsl:stylesheet> </xsl:template> <xsl:template match="/*"> <axsl:template match="div[@class='{name()}']"> <xsl:apply-templates mode="apply"/> </axsl:template> <xsl:apply-templates select="*[*]"/> </xsl:template> <xsl:template match="*"> <axsl:template match="*[@class='{name()}']"> <xsl:apply-templates mode="apply"/> </axsl:template> <xsl:apply-templates select="*[*]"/> </xsl:template> <xsl:template match="*" mode="apply"> <axsl:apply-templates select=".//*[@class='{name()}']"/> </xsl:template> </xsl:stylesheet> 注意: 前导 // 在匹配模式中完全是多余的; 您确定要在 .// xsl:apply-templates表达式中使用 select 吗?

回答 1 投票 0

是否可以用 XSLT 样式表转换 XSLT 样式表?

我有一个两步构建过程。在第一步中,我想将符合定义良好的 XSD 模式的小型 XML 文件中的配置读取到 XSLT 样式表中,然后输出另一个

回答 1 投票 0

如何在xslt中获取同一节点下的最大值

我有一个如下所示的xml: 每小时报告 8<...

回答 5 投票 0

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