XSLT是XML的一种转换语言,旨在将结构化文档转换为其他格式(如XML,HTML和纯文本,或者在XSLT 3,JSON中)。问题应该根据需要使用xslt-1.0,xslt-2.0或xslt-3.0标记之一。
我有一个 XML 文件,正在使用 oXygen 中的 XSLT 3.0 将其转换为 HTML。 假设我的输入文件如下所示: 首先我与约翰·史密斯交谈。 然后我 我有一个 XML 文件,正在使用 oXygen 中的 XSLT 3.0 将其转换为 HTML。 假设我的输入文件如下所示: <root> <p>First I spoke to John Smith.</p> <p>Then I talked with David Jones.</p> </root> 此外,我有一个术语列表,我想在转换过程中自动标记它们。它们位于单独的 XML 文件中,如下所示: <terms> <term>spoke</term> <term>talked</term> </terms> 我希望我的输出 HTML 看起来像这样: <body> <p>First I <span class="term">spoke</span> to John Smith.</p> <p>Then I <span class="term">talked</span> with David Jones.</p> </body> 当然,这可以通过正则表达式搜索和替换来完成,但我正在将数百个术语的列表与一本书长的文本进行整理,因此一次只执行一个是不可能的。我认为在我的 XSLT 中必须有一种自动化的方法来执行此操作。 在我看来,它可能起作用的一种方式是使用类似这样的东西,除了不是单个正则表达式搜索,我需要让它循环遍历其他 XML 文件中的元素的所有: <xsl:analyze-string> 或者是否有某种方法可以从术语列表中的 xsl:for-each 开始,并将其输入到 Replace() 函数中。但我不确定如何构建它,因此它会影响 XML 书籍的文本输出。 任何方向将不胜感激。抱歉我的无知;我还在学习中。 听起来你想要<xsl:template match="text()"> <xsl:analyze-string select="." regex="findmywords"> <xsl:matching-substring> <span class="term"> <xsl:value-of select="."/> </span> </xsl:matching-substring> <xsl:non-matching-substring> <xsl:value-of select="."/> </xsl:non-matching-substring> </xsl:analyze-string> </xsl:template> 。如果任何术语可能具有会影响正则表达式匹配的特殊字符,请使用 funtx 库中的 regex="{string-join(doc('terms,xml')//term, '|')}"。
如果子元素 fiel1 和 field2 都不存在或为空,我需要删除 xml 元素。 输入和预期结果(见评论) <...
我正在尝试在 log4j2.xml 文件中创建条件语句,但它似乎不接受任何条件格式。我尝试过各种选项,例如 xslt 等,但似乎没有......
我有以下传入的 xml 格式,对于此输入 XML,我只需要添加肥皂信封。 输入XML 我有以下传入的 xml 格式,对于此输入 XML,我只需要添加肥皂信封。 输入xml <?xml version="1.0" encoding="UTF-8"?> <p:msg xmlns:p="http://.xml.invoice.com"> <access> <NAME>ABC</NAME> </access> <requestBody> <content>test message</content> </requestBody> </p:msg> 使用下面的简单 xslt 代码,我可以添加肥皂信封,但此声明 需要使用单引号 XSLT 代码 <?xml version="1.0" encoding="UTF-8"?> <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/"> <!-- Template to match the root of the XML document --> <xsl:template match="/"> <!-- Start of SOAP Envelope --> <soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:p="http://.xml.invoice.com"> <soapenv:Header/> <!-- SOAP Body --> <soapenv:Body> <!-- Copy the original XML payload into the Body --> <xsl:copy-of select="/*"/> </soapenv:Body> </soapenv:Envelope> </xsl:template> </xsl:stylesheet> 如果有什么方法可以将 xml 声明从单引号更改为双引号,请帮助我吗? 预期输出(xml 版本和编码应使用单引号。) <?xml version='1.0' encoding='UTF-8'?> <soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:p="http://.xml.invoice.com"> <soapenv:Header/> <soapenv:Body> <p:msg> <access> <NAME>ABC</NAME> </access> <requestBody> <content>test message</content> </requestBody> </p:msg> </soapenv:Body> </soapenv:Envelope> 这不是必需的,但如果你必须拥有它,你可以使用这样的黑客: <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"> <xsl:output method="xml" encoding="utf-8" indent="yes" omit-xml-declaration="yes"/> <xsl:strip-space elements="*"/> <xsl:template match="/"> <xsl:text disable-output-escaping="yes"><?xml version='1.0' encoding='UTF-8'?> </xsl:text> <soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:p="http://.xml.invoice.com"> <soapenv:Header/> <soapenv:Body> <xsl:copy-of select="*"/> </soapenv:Body> </soapenv:Envelope> </xsl:template> </xsl:stylesheet> 这是假设您的处理器支持disable-output-escaping。
在这个问题之后,我想根据预处理器指令在构建时有条件地包含/排除 XAML 元素,类似于 #if/#else 在 C# 中的工作方式。我尝试过使用 XSLT 来转换...
如何使用 XSLT 在构建时有条件地转换 XAML 以镜像 C# 预处理器指令?
我在开发时广泛使用 C# 预处理器指令。我直接在 .cs 文件中定义它们,或者在 .csproj 中全局定义它们: fix_issue_001;
我正在将java对象序列化为XML,稍后需要通过xslt转换该xml。 在这个特定的转换中,我需要删除一个名为 fieldToDelete 的节点(= Java 字段),它可以包含一个
如何删除 OIC SOAP 响应映射器 XSLT 中的命名空间?
我们正在 Oracle Integration Cloud (OIC) 中进行集成,该集成可返回 SOAP 响应。然而,OIC 会自动将命名空间添加到 SOAP 响应元素,这会导致解析...
我正在尝试了解 XML 和 XSLT 的内容,在我的研究中我偶然发现了不同的 XSLT 处理器。 Xalan 是第一个,它似乎工作得很好而且是免费的,除了......
我有一个工作 .xsl,但我想添加一个检查以查看当前单元格是否位于第一行和第一个单元格中: 我有一个工作 .xsl,但我想添加一个检查以查看当前单元格是否位于第一行和第一个单元格中: <xsl:for-each select="w:tr"> <xsl:for-each select="w:tc[position()!=last()]"> <!-- Check if first row and if is first column --> <xsl:if test="w:tr[position()=first()] and w:tc[position()=first()]"> <xsl:text>\mcx</xsl:text> </xsl:if> <!-- Check if is first row only --> <xsl:if test="w:tr[position()=first()] and w:tc[position()!=first()]"> <xsl:text>\mc</xsl:text> </xsl:if> </xsl:for-each> </xsl:for-each> 我无法应用添加了这些行的 .xsl。如果我把它们拿出来,它就会起作用,所以我知道我的支票不正确。有人可以帮我解决 wordML 方面的问题吗?当我接近这个错误时? 谢谢, 拉斯 我纯粹猜测你想做类似的事情: <xsl:for-each select="w:tr"> <xsl:variable name="is1stRow" select="position()=1" /> <xsl:for-each select="w:tc"> <xsl:choose> <xsl:when test="$is1stRow and position()=1"> <!-- this is the first cell in the first row --> <xsl:text>\mcx</xsl:text> </xsl:when> <xsl:when test="$is1stRow"> <!-- this is another cell in the first row --> <xsl:text>\mc</xsl:text> </xsl:when> <xsl:otherwise> <!-- this is a cell in another row --> <!-- do something here? --> </xsl:otherwise> </xsl:choose> </xsl:for-each> </xsl:for-each>
如何根据某些分隔符拆分字符串? 给定一个字符串 Topic1,Topic2,Topic3,我想根据 , 拆分字符串以生成: 主题1 主题2 主题3
我的输入xml如下 1 FFC1 我的输入xml如下 <ns0:ProjectSync xmlns:ns0="http://XSLMapTesting.ProjectSync"> <Funder> <OID>1</OID> <FFC>FFC1</FFC> </Funder> <Funder> <OID>2</OID> <FFC></FFC> </Funder> <Funder> <OID>3</OID> <FFC>FFC3</FFC> </Funder> <Funder> <OID>4</OID> <FFC></FFC> </Funder> <ActiveBudget> <BudgetLines> <Fund> <ID>1</ID> </Fund> </BudgetLines> <BudgetLines> <Fund> <ID>4</ID> </Fund> </BudgetLines> </ActiveBudget> </ns0:ProjectSync> 我的映射xslt代码如下 <xsl:template match="/"> <xsl:apply-templates select="/s0:ProjectSync" /> </xsl:template> <!-- //////////////////////////////////////// ProjectSync template //////////////////////////////////////// --> <xsl:template match="/s0:ProjectSync"> <ns0:Projects> <Project> <Funders> <xsl:apply-templates select="Funder[*]" /> </Funders> <Budgets> <xsl:apply-templates select="ActiveBudget/BudgetLines[*]" /> </Budgets> </Project> </ns0:Projects> </xsl:template> <!-- //////////////////////////////////////// Funders template //////////////////////////////////////// --> <xsl:template match="Funder"> <Funder> <ID> <xsl:choose> <xsl:when test="FFC != ''"> <xsl:value-of select="FFC/text()"/> </xsl:when> <xsl:otherwise> <xsl:value-of select="OID/text()" /> </xsl:otherwise> </xsl:choose> </ID> </Funder> </xsl:template> <!-- //////////////////////////////////////// BudgetLines template //////////////////////////////////////// --> <xsl:template match="ActiveBudget/BudgetLines"> <BudgetLine> <FundID> <xsl:value-of select="Fund/ID/text()" /> </FundID> </BudgetLine> </xsl:template> </xsl:stylesheet> 在上面的“BudgetLines 模板”中,我想应用一个逻辑,例如对于每个预算线,它都会迭代资助者记录集,并查看是否找到具有相同 ID 的资助者并且还填充了 FFC,然后应该映射 FFC。否则,基金/ID 应映射到输出 xml 中。下面的代码也定义了同样的逻辑: for-each select="BudgetLine" for-each select="Funder" choose when test="BudgetLine/Fund/ID = Funder/OID & Funder/FFC != ''" <xsl:value-of select="Funder/FFC/text()" /> break; otherwise <xsl:value-of select="BudgetLine/Fund/ID/text()" /> 上述 xml 的预期输出应如下所示 <ns0:Projects xmlns:ns0="http://XSLMapTesting.Projects"> <Project> <Funders> <Funder> <ID>FFC1</ID> </Funder> <Funder> <ID>2</ID> </Funder> <Funder> <ID>FFC3</ID> </Funder> <Funder> <ID>4</ID> </Funder> </Funders> <Budgets> <BudgetLine> <FundID>FFC1</FundID> </BudgetLine> <BudgetLine> <FundID>4</FundID> </BudgetLine> </Budgets> </Project> </ns0:Projects> 我该如何在 xsl 中实现这一点? 谢谢你 如果我正确理解您的要求,我建议您这样做: XSLT 1.0 <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:strip-space elements="*"/> <xsl:key name="funder" match="Funder" use="OID" /> <!-- identity transform --> <xsl:template match="@*|node()"> <xsl:copy> <xsl:apply-templates select="@*|node()"/> </xsl:copy> </xsl:template> <xsl:template match="Funder"> <xsl:copy> <ID> <xsl:choose> <xsl:when test="FFC/text()"> <xsl:value-of select="FFC"/> </xsl:when> <xsl:otherwise> <xsl:value-of select="OID"/> </xsl:otherwise> </xsl:choose> </ID> </xsl:copy> </xsl:template> <xsl:template match="ActiveBudget"> <Budgets> <xsl:apply-templates/> </Budgets> </xsl:template> <xsl:template match="BudgetLines"> <xsl:variable name="funder" select="key('funder', Fund/ID)" /> <BudgetLine> <FundID> <xsl:choose> <xsl:when test="$funder/FFC/text()"> <xsl:value-of select="$funder/FFC"/> </xsl:when> <xsl:otherwise> <xsl:value-of select="$funder/OID"/> </xsl:otherwise> </xsl:choose> </FundID> </BudgetLine> </xsl:template> </xsl:stylesheet>
首先我必须说,我不是 XML/XSLT 转换方面的专家。所以请耐心等待。 我有以下 XML 结构。 1 首先我必须说,我不是 XML/XSLT 转换方面的专家。所以请耐心等待。 我有以下 XML 结构。 <cac:InvoiceLine> <cbc:ID>1</cbc:ID> <cbc:Note>Some remark text</cbc:Note> <cbc:Note>Charge: 1234567*</cbc:Note> <cbc:Note>Quantity: 1000*</cbc:Note> <cbc:Note>Charge: 987654*</cbc:Note> <cbc:Note>Quantity: 5000*</cbc:Note> ... </cac:InvoiceLine> Charge 和 Quantity 已连接。 Charge 1234567 的 Quantity 为 1000 公斤。 现在我想循环遍历列表并在一行(!)中打印所有连接的数据,例如: 1000公斤收费1234567 5000公斤收费987654 我尝试了以下代码,但实际上此代码为每个 <cbc:Note> 字段打印一个新行。 <xsl:for-each select="./cbc:Note"> <xsl:choose> <xsl:when test="contains(.,'Charge:')"> <xsl:value-of select="substring-before(substring-after(.,'Charge:'),'*')"/> <br /> </xsl:when> <xsl:when test="contains(.,'Menge:')"> <xsl:value-of select="substring-before(substring-after(.,'Quantity:'),'*')"/> <br /> </xsl:when> <xsl:otherwise> <xsl:value-of select="."/> <br /> </xsl:otherwise> </xsl:choose> </xsl:for-each> 有什么想法可以解决这个问题吗? 尝试类似: <xsl:template match="cac:InvoiceLine"> <xsl:for-each select="cbc:Note[starts-with(., 'Charge: ')]"> <xsl:value-of select="substring-before(substring-after(following-sibling::cbc:Note[1], 'Quantity: '), '*')"/> <xsl:text> kg </xsl:text> <xsl:value-of select="substring-before(., '*')"/> <br/> </xsl:for-each> </xsl:template> 您可以在此处看到它的工作原理。
在 Azure DevOps Pipeline 中执行 XSLT
我有一个使用 Azure DevOps CICD 构建的 VSTO Visio Addin。 作为管道的一部分,我希望有一个阶段任务来自动执行 XSLT,该 XSLT 将处理各种 Visual Studio *.csproj
我有带有产品参数(如颜色)的 XML。 黑色 白色 我想输出一个值...
这是我的 XSLT 代码片段: 这是我的 XSLT 代码片段: <xsl:stylesheet version="2.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:ns1="http://www.oracle.com/retail/integration/base/bo/FileDesc/v1" xmlns:ns2="http://www.oracle.com/retail/integration/base/bo/FileRef/v1" exclude-result-prefixes="ns1 ns2"> <xsl:import href="File_Download_Functions.xsl"/> <xsl:output method="xml" version="1.0" encoding="UTF-8" standalone="yes" indent="yes"/> <xsl:param name="File_Properties"/> <!-- Root-level template that controls output based on matches --> <xsl:template match="/"> <xsl:choose> <!-- Check if there is any match for FileDesc or FileRef --> <xsl:when test="/ns1:FileDesc or /ns2:FileRef"> <!-- Apply templates only if match is found --> <xsl:apply-templates/> </xsl:when> <xsl:otherwise> <!-- No matches, output minimal root element --> <empty></empty> </xsl:otherwise> </xsl:choose> </xsl:template> <!-- Template for ns1:FileDesc --> <xsl:template match="/ns1:FileDesc"> <xsl:if test="contains(ns1:event_description, '-FLAG-N-FLAG-') and ($File_RType = 'FileCre' or $File_RType = 'FileHdrMod' or $File_RType = 'FileDtlMod' or $File_RType = 'FileDtlCre')"> <!-- Logic for ns1:FileDesc --> ... </xsl:if> </xsl:template> <!-- Template for ns2:FileRef --> <xsl:template match="/ns2:FileRef"> <xsl:if test="($File_RType) = 'FileDel'"> <!-- Logic for ns2:FileRef --> ... </xsl:if> </xsl:template> <!-- Other templates --> <xsl:template name="get_arnotts_location"> <!-- Logic for get_arnotts_location --> </xsl:template> <xsl:template name="splitStringToLocs"> <!-- Logic for splitStringToLocs --> </xsl:template> </xsl:stylesheet> 问题: 当有匹配的模板时,转换效果很好。但是,当没有任何模板匹配时,仍然会创建一个 XML 文件,其中仅包含 XML 声明: tried to add the block with conditions with Root-level 'template that controls output based on matches' 尽管如此,仍然会创建一个仅包含 XML 声明的空输出文件。有没有办法在找不到匹配项时阻止创建文件?或者我的方法中遗漏了一些东西?任何指导将不胜感激! 我在这里遗漏了什么信息吗? 我可以看到像这样的文档<ns1:FileDesc/>将满足模板中与when匹配的/子句,但是根元素将不匹配任何模板,除了XML声明之外什么也不输出。 我怀疑您试图使用与 / 匹配的模板实现的目标是,如果其他模板都不与根元素匹配,则返回 <empty></empty>。如果我理解正确,那么我认为您应该删除与 / 匹配的模板并将其替换为: <xsl:template match="/*"> <empty><!-- fallback --></empty> </xsl:template> 如果您的特定模板之一与根元素匹配,则上述模板将被忽略,但如果没有一个特定模板与根元素匹配,则上述模板将匹配它。非常通用的 match="/*" 属性自动赋予它比任何与其他可能的根元素与更具体的 match 表达式相匹配的模板更低的优先级。
我正在尝试编写一个xsl文件,以便将给定的xml转换为html(用于发布)。这是我的示例 xml: 我正在尝试编写一个 xsl 文件,以便将给定的 xml 转换为 html(用于发布)。这是我的示例 xml: <text xml:lang="grc"> <body> <div type="edition" n="urn:cts:greekLit:tlg0059.tlg010.perseus-grc2" xml:lang="grc"> <div type="textpart" subtype="section" resp="perseus" n="11"> <p><said who="#Σωκράτης"><milestone unit="page" resp="Stephanus" n="11"/> <milestone unit="section" resp="Stephanus" n="11a"/><label>ΣΩ.</label> ὅρα δή, Πρώταρχε, τίνα λόγον μέλλεις παρὰ Φιλήβου δέχεσθαι νυνὶ καὶ πρὸς τίνα τὸν παρʼ ἡμῖν ἀμφισβητεῖν, <milestone unit="section" resp="Stephanus" n="11b"/> ἐὰν μή σοι κατὰ νοῦν ᾖ λεγόμενος. βούλει συγκεφαλαιωσώμεθα ἑκάτερον;</said></p> <p><said who="#Πρώταρχος"><label>ΠΡΩ.</label> πάνυ μὲν οὖν.</said></p> <p><said who="#Σωκράτης"><label>ΣΩ.</label> Φίληβος μὲν τοίνυν ἀγαθὸν εἶναί φησι τὸ χαίρειν πᾶσι ζῴοις καὶ τὴν ἡδονὴν καὶ τέρψιν, καὶ ὅσα τοῦ γένους ἐστὶ τούτου σύμφωνα· τὸ δὲ παρʼ ἡμῶν ἀμφισβήτημά ἐστι μὴ ταῦτα, ἀλλὰ τὸ φρονεῖν καὶ τὸ νοεῖν καὶ μεμνῆσθαι καὶ τὰ τούτων αὖ συγγενῆ, δόξαν τε ὀρθὴν καὶ ἀληθεῖς λογισμούς, τῆς γε ἡδονῆς ἀμείνω καὶ λῴω γίγνεσθαι σύμπασιν ὅσαπερ <milestone unit="section" resp="Stephanus" n="11c"/> αὐτῶν δυνατὰ μεταλαβεῖν· δυνατοῖς δὲ μετασχεῖν ὠφελιμώτατον ἁπάντων εἶναι πᾶσι τοῖς οὖσί τε καὶ ἐσομένοις. μῶν οὐχ οὕτω πως λέγομεν, ὦ Φίληβε, ἑκάτεροι;</said></p> <p><said who="#Φίληβος"><label>ΦΙ.</label> πάντων μὲν οὖν μάλιστα, ὦ Σώκρατες.</said></p> <p><said who="#Σωκράτης"><label>ΣΩ.</label> δέχῃ δὴ τοῦτον τὸν νῦν διδόμενον, ὦ Πρώταρχε, λόγον;</said></p> <p><said who="#Πρώταρχος"><label>ΠΡΩ.</label> ἀνάγκη δέχεσθαι· Φίληβος γὰρ ἡμῖν ὁ καλὸς ἀπείρηκεν.</said></p> <p><said who="#Σωκράτης"><label>ΣΩ.</label> δεῖ δὴ περὶ αὐτῶν τρόπῳ παντὶ τἀληθές πῃ περανθῆναι;</said></p> <p><said who="#Πρώταρχος"><milestone unit="section" resp="Stephanus" n="11d"/><label>ΠΡΩ.</label> δεῖ γὰρ οὖν.</said></p> <p><said who="#Σωκράτης"><label>ΣΩ.</label> ἴθι δή, πρὸς τούτοις διομολογησώμεθα καὶ τόδε.</said></p> <p><said who="#Πρώταρχος"><label>ΠΡΩ.</label> τὸ ποῖον;</said></p> <p><said who="#Σωκράτης"><label>ΣΩ.</label> ὡς νῦν ἡμῶν ἑκάτερος ἕξιν ψυχῆς καὶ διάθεσιν ἀποφαίνειν τινὰ ἐπιχειρήσει τὴν δυναμένην ἀνθρώποις πᾶσι τὸν βίον εὐδαίμονα παρέχειν. ἆρʼ οὐχ οὕτως;</said></p> <p><said who="#Πρώταρχος"><label>ΠΡΩ.</label> οὕτω μὲν οὖν.</said></p> <p><said who="#Σωκράτης"><label>ΣΩ.</label> οὐκοῦν ὑμεῖς μὲν τὴν τοῦ χαίρειν, ἡμεῖς δʼ αὖ τὴν τοῦ φρονεῖν;</said></p> <p><said who="#Πρώταρχος"><label>ΠΡΩ.</label> ἔστι ταῦτα.</said></p> 我想以粗体突出显示标签,并且理想情况下,将里程碑部分(如 11b)放置在文本的左边距(但我不知道如何开始执行后一项任务)。 这是我写的xsl: <?xml version="1.0" encoding="UTF-8"?> <xsl:stylesheet version="1.0" xmlns="http://www.w3.org/1999/HTML" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"> <xsl:output method="html" encoding="UTF-8" indent="yes"/> <xsl:template match="/"> <xsl:apply-templates/> </xsl:template> <xsl:template match="label"> <b> <xsl:apply-templates/> </b> </xsl:template> <xsl:template match="p"> <p> <xsl:apply-templates/> </p> </xsl:template> </xsl:stylesheet> 但输出是纯文本,没有中断,也没有粗体。任何提示将不胜感激! 您的 XSLT 文件几乎已步入正轨,但它有几个问题需要解决,以实现具有粗体标签和里程碑的所需 HTML 格式。以下是您可以进行的调整和添加: 1.命名空间 您的 XML 没有特定的命名空间,但 XSLT 文件引用了 HTML 命名空间。删除或修改它以确保 XSLT 正确匹配 XML 中的元素。 2.处理 milestone 元素 要将 milestone 元素放置在左边距中,您可以为 milestone 创建特定模板。一种简单的方法是在 <span> 元素内设置它们的样式,并使用 CSS 将它们定位在边距中。 3.格式化输出 为了确保 HTML 输出看起来正确,请为 said、label 和 milestone 等元素指定其他样式和模板。 这是经过这些更改的修订版 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="html" encoding="UTF-8" indent="yes"/> <xsl:template match="/"> <html> <head> <title>Transformed Text</title> <style> /* Style for labels in bold */ .label { font-weight: bold; } /* Style for milestones on the left margin */ .milestone { float: left; margin-right: 10px; color: gray; } /* Styling paragraphs */ p { margin-left: 20px; text-indent: -20px; } </style> </head> <body> <xsl:apply-templates/> </body> </html> </xsl:template> <!-- Template for paragraphs --> <xsl:template match="p"> <p> <xsl:apply-templates/> </p> </xsl:template> <!-- Template for labels with bold formatting --> <xsl:template match="label"> <span class="label"> <xsl:apply-templates/> </span> </xsl:template> <!-- Template for milestone elements to place them on the left --> <xsl:template match="milestone"> <span class="milestone"> <xsl:value-of select="@n"/> </span> </xsl:template> <!-- Template for 'said' elements --> <xsl:template match="said"> <div> <xsl:apply-templates/> </div> </xsl:template> </xsl:stylesheet> 变更说明: 命名空间更正:删除了 xmlns="http://www.w3.org/1999/HTML",因为它会干扰选择 XML 元素。 CSS 样式:<style> 块中的 CSS 用于: 使用 .label 类的粗体标签。 使用 milestone 类将 .milestone 元素浮动到左边距。 模板: <milestone>元素包裹在<span class="milestone">中,@n用于显示里程碑编号。 <label> 元素包裹在 <span class="label"> 中以实现大胆的样式。 这应该创建一个组织更加直观的 HTML 输出,并在左边距中带有粗体标签和里程碑。
vs2022 xsl 归档与其他实例不同的授权集。 (H结果:0x80131401)
几天以来,我的 Visual Studio 2022 无法打开 xslt 文件。 它可以打开其他文件,甚至是 xml。 从现在开始我使用单独的 xsl 文件,但是当我制作项目 xslt 文件时仍然不起作用 有没有人有...