gpt4 book ai didi

xslt - XSLT 转换中的一个讨厌的空行

转载 作者:行者123 更新时间:2023-12-03 11:46:01 26 4
gpt4 key购买 nike

我正在使用 XSLT 从专利商标局的商标 XML 文件中提取一些数据。基本上没问题,除了一个空行。我可以通过一个比较丑陋的解决方法来摆脱它,但我想知道是否有更好的方法。

这是我的 XSLT 的一个子集:

<?xml version="1.0" encoding="utf-8"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:tm="http://www.wipo.int/standards/XMLSchema/trademarks" xmlns:pto="urn:us:gov:doc:uspto:trademark:status">
<xsl:output method="text" encoding="utf-8" />
<xsl:strip-space elements="*"/>
<xsl:template match="tm:Transaction">
<xsl:apply-templates select=".//tm:TradeMark"/>
<xsl:apply-templates select=".//tm:ApplicantDetails"/>
<xsl:apply-templates select=".//tm:MarkEvent"/>
</xsl:template>

<xsl:template match="tm:TradeMark">
MarkCurrentStatusDate,"<xsl:value-of select="normalize-space(tm:MarkCurrentStatusDate)"/>"<xsl:text/>
ApplicationNumber,"<xsl:value-of select="normalize-space(tm:ApplicationNumber)"/>"<xsl:text/>
ApplicationDate,"<xsl:value-of select="normalize-space(tm:ApplicationDate)"/>"<xsl:text/>
RegistrationNumber,"<xsl:value-of select="normalize-space(tm:RegistrationNumber)"/>"<xsl:text/>
RegistrationDate,"<xsl:value-of select="normalize-space(tm:RegistrationDate)"/>"<xsl:text/>
<xsl:apply-templates select="tm:WordMarkSpecification"/>
<xsl:apply-templates select="tm:TradeMarkExt"/>
<xsl:apply-templates select="tm:PublicationDetails"/>
<xsl:apply-templates select="tm:RepresentativeDetails"/>
</xsl:template>

<xsl:template match="tm:WordMarkSpecification">
MarkVerbalElementText,"<xsl:value-of select="normalize-space(tm:MarkVerbalElementText)"/>"<xsl:text/>
</xsl:template>

它还有一些模板,但这就是它的要点。我总是在输出的最开始得到一个空行,在任何数据之前;我没有得到任何其他空白行。我的规避是将两条线结合起来:

<xsl:template match="tm:TradeMark">
MarkCurrentStatusDate,"<xsl:value-of select="normalize-space(tm:MarkCurrentStatusDate)"/>"<xsl:text/>

成一行:

<xsl:template match="tm:TradeMark">MarkCurrentStatusDate,"<xsl:value-of select="normalize-space(tm:MarkCurrentStatusDate)"/>"<xsl:text/>

这行得通,如果没有更好的东西,我想我可以接受,但它看起来不够优雅,对我来说就像一个杂物。其他模板都不需要这种处理(例如 tm:WordMarkSpecification 模板或之后的另外六个模板),我很困惑为什么这里需要它。有什么想法吗?

因为我可以在 XSLT 中看到插入空白行的特定点,所以我认为提供我正在测试的 XML 没有帮助,但如果您确实需要查看它,可以在 https://tsdrapi.uspto.gov/ts/cd/casestatus/rn2178784/download.zip 获得它;它是该存档中的 XML 文件。

最佳答案

在模板的开头使用与在模板结尾使用的相同的技巧,用空的 <xsl:text/> 分割样式表节点树。说明:

<xsl:template match="tm:TradeMark">
<xsl:text/>MarkCurrentStatusDate,"<xsl:value-of select="normalize-space(tm:MarkCurrentStatusDate)"/>"<xsl:text/>

关于xslt - XSLT 转换中的一个讨厌的空行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17823425/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com