这是我的xsl和xml代码。
我每次在顶部运行时都会看到日期2013.08.20
,我想知道如何从输出中删除它。
XSL样式表:
<?xml version="1.0" ?>
<xsl:stylesheet version="1.0" xmlns:zs="http://www.loc.gov/zing/srw/" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output method="html"/>
<xsl:template match="zs:version">
</xsl:template>
<xsl:template match="zs:numberOfRecords">
</xsl:template>
<xsl:template match="zs:recordPosition">
</xsl:template>
<xsl:template match="zs:record">
<table>
<xsl:apply-templates/>
</table>
</xsl:template>
<xsl:template match="zs:recordSchema">
</xsl:template>
<xsl:template match="zs:recordPacking">
</xsl:template>
<xsl:template match="leader">
</xsl:template>
<xsl:template match="controlfield">
</xsl:template>
<xsl:template match="datafield[@tag=245]">
<tr><td>Name: </td><td><b>
<xsl:for-each select="subfield[@code='a']">
<xsl:value-of select="text()"/>, </xsl:for-each></b>
<xsl:for-each select="subfield[@code='r']">
<xsl:value-of select="text()"/>, </xsl:for-each>
<xsl:for-each select="subfield[@code='g']">
(<xsl:value-of select="text()"/>), </xsl:for-each>
<xsl:for-each select="subfield[@code='d']">
d. <xsl:value-of select="text()"/> </xsl:for-each>
</td></tr>
</xsl:template>
<xsl:template match="datafield[@tag=856]">
<tr><td>Links: </td><td>
<xsl:element name="a">
<xsl:attribute name="href">
<xsl:value-of select="subfield[@code='u']"/>
</xsl:attribute>
<xsl:value-of select="subfield[@code='y']"/>
</xsl:element>
</td></tr>
</xsl:template>
<xsl:template match="datafield[@tag=857]">
<tr><td>Image: </td><td>
<xsl:element name="img">
<xsl:attribute name="src">
<xsl:value-of select="subfield[@code='u']"/>
</xsl:attribute>
<xsl:attribute name="alt">
<xsl:value-of select="subfield[@code='y']"/>
</xsl:attribute>
<xsl:attribute name="width">
<xsl:text>200</xsl:text>
</xsl:attribute>
</xsl:element>
<xsl:value-of select="subfield[@code='y']"/>
</td></tr>
</xsl:template>
</xsl:stylesheet>
XML输入:
<zs:searchRetrieveResponse xmlns:zs="http://www.loc.gov/MARC21/slim">
<zs:version>2013.08.20</zs:version>
<zs:numberOfRecords>1</zs:numberOfRecords>
<zs:resultSetId>5031057_1</zs:resultSetId>
<zs:records>
<zs:record format="WWI" type="Bibliographic">
<zs:recordSchema>info:marcXchange</zs:recordSchema>
<zs:recordPacking>xml</zs:recordPacking>
<zs:recordData>
<leader>01136nam 2200301 4500</leader>
<controlfield tag="001">3/1</controlfield>
<controlfield tag="003">CaONF</controlfield>
<controlfield tag="008">150320s2015 onc 00011 eng d</controlfield>
<controlfield tag="009">NAME</controlfield>
<datafield tag="245">
<subfield code="a">Farebrother, George A.</subfield>
<subfield code="r">Sergeant</subfield>
<subfield code="g">NiagaraFalls</subfield>
<subfield code="d">May 26, 1918</subfield>
<subfield code="u">
No.2 District Depot. 3rd Bde., Canadian Field Artillery
</subfield>
<subfield code="k">1</subfield>
<subfield code="p">
NIAGARA FALLS (FAIRVIEW) CEMETERY Ontario,Canada, Family. Sec. M. Lot 76.
</subfield>
</datafield>
<datafield tag="856">
<subfield code="y">Test complex URL</subfield>
<subfield code="2">http://</subfield>
<subfield code="a">www.nflibrary.ca/test/test.aspx?id=</subfield>
<subfield code="b">farebrother</subfield>
<subfield code="c">Display=34</subfield>
</datafield>
<datafield tag="856">
<subfield code="y">Canadian Virtual War Memorial</subfield>
<subfield code="u">
http://www.veterans.gc.ca/eng/collections/virtualmem/Detail/425501
</subfield>
</datafield>
<datafield tag="856">
<subfield code="y">War Graves Commission</subfield>
<subfield code="u">
http://www.cwgc.org/find-war-dead/casualty/425501/FAREBROTHER, GEORGE ALFRED
</subfield>
</datafield>
<datafield tag="856">
<subfield code="y">Book of Remembrance</subfield>
<subfield code="u">
http://www.veterans.gc.ca/images/collections/books/bww1/ww1405.jpg
</subfield>
</datafield>
<datafield tag="856">
<subfield code="y">National Archives</subfield>
<subfield code="u">
</subfield>
</datafield>
<datafield tag="856">
<subfield code="y">Attestation Papers</subfield>
<subfield code="u">
</subfield>
</datafield>
<datafield tag="857">
<subfield code="y">
</subfield>
<subfield code="t">
</subfield>
</datafield>
<datafield tag="857">
<subfield code="u">
</subfield>
</datafield>
</zs:recordData>
<zs:recordPosition>1</zs:recordPosition>
</zs:record>
</zs:records>
</zs:searchRetrieveResponse>
答案 0 :(得分:0)
您的样式表似乎有几个问题
"*"
的模板(应用于文档元素zs:searchRetrieveResponse
)什么都不做,处理就在这里结束,没有产生任何输出;如果你真正的意思是&#34;什么都不打印并继续处理这个元素的内容&#34;你应该在该模板中使用<xsl:apply-templates/>
(或者,更好的是,消除该模板,而将使用built-in one)"zs"
匹配(= name 为zs
的元素);如果您希望它应用于zs
命名空间中的元素,您应该使用<xsl:template match="zs:*">
(提示:因为此模板不执行任何操作,并且文档元素位于{{1命名空间,删除此模板,否则将无法输出)zs
,理论上可以执行某些操作,并不是真正执行的,因为输入中的"recordData"
元素位于recordData
命名空间中,因此{{1} } attribute应为zs
match
,但不是在生成HTML元素;事实上,你的模板(如果它们被执行)只生成文本:你应该使用"zs:recordData"
由于您未提供预期输出的示例,因此无法为您提供更准确的建议。