我正在使用XSLT從專利和商標局中提取商標XML文件中的一些數據。大部分都沒問題,只有一條空行。我可以用一個適度醜陋的解決方法擺脫它,但我想知道是否有更好的方法。XSLT轉換中的一個討厭的空白行
這裏是我的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文件。
完美,謝謝!你能解釋爲什麼這個文件中的第一個模板需要這個,但其他7個不需要? – codingatty
不是沒有看到您的輸入XML,沒有。需要記住的是,任何出現在同一文本節點中的非空白字符的換行符(或其他空白符號)都是重要的,並且將被複制到輸出中。如果你關心空格,通常最好把所有的文本文本放在xsl:文本指令中。 –