我需要将一个xml文档中的元数据转换为另一个xml文档中的Dublin Core元数据。这是第一个xml文档:
<?xml version="1.0" encoding="UTF-8"?>
<document xmlns:xlink="http://www.w3.org/1999/xlink">
<description>
<title>Letter from Waldemar Schultze to Jennie Schultze</title>
<creator type="author">
<name type="personal">Schultze, Waldemar</name>
</creator>
<date>1943-06-30</date>
<source>Special Collections and University Archives, W. E. B. Du Bois Library,
University of Massachusetts Amherst.</source>
<citation>Robert and Waldemar Schultze Papers (MS 528). Special Collections and
University Archives, W.E.B. Du Bois Library, University of
Massachusetts Amherst.</citation>
</description>
<text>
<header type="letterhead">
<imageGroup>
<image xlink:href="mums528-i001-001.png"/>
<caption>page 1</caption>
</imageGroup>
<imageGroup>
<image xlink:href="mums528-i001-002.png"/>
<caption>page 2</caption>
</imageGroup>
<organization>Unites States Disciplinary Barracks</organization>
<location>Fort Leavenworth, Kansas</location>
<date format="M/DD/YY">6/30/43</date>
<recipient>
<name type="personal">Mrs. W.J. Schultze</name>
<address>875 Richmond Av., Buffalo, N.Y.</address>
<relation>Mother</relation>
</recipient>
</header>
<body>
<salutation>Dear Mother,</salutation>
<p><line>This is the first letter I have had</line>
<line>an opportunity to write you since leaving Fort</line>
<line>Jay, and I know you must be anxious to hear from me.</line></p>
<p><line>Bob and I are both feeling as well as</line>
<line>can be expected considering our present cir-</line>
<line>cumstances. We both have high blood</line>
<line>pressure, mine has been 160/100 for the past</line>
<line>2 days, and Bob's 158/96, but my sinus</line>
<line>infection has not caused me quite so much</line>
<line>trouble since leaving N.Y. State. I believe</line>
<line>the air is dryer here and is responsible</line>
<line>for any alleviation that has taken place.</line></p>
<p><line>While a prisoner here remains in their</line>
<line>so-called 1st grade, he is able to write</line>
<line>twice a week, in second grade once a week,</line>
<line>and in third grade once a month. These</line>
<line>grades refer to classifications that ostensibly</line>
<line>are for conduct while here. It is quite possible</line>
<line>to lose a conduct rating, as I understand it,</line>
<line>by not having a perpetually rusting tin cup polished</line>
<pb n="2"/>
<line>brightly for daily inspection, although the tin plating long ago dis-</line>
<line>appeared and the cup is rusty again within 2 hours after wetting.</line></p>
<p><line>The food here is good and is well-cooked,</line>
<line>with one exception, the gravy, which is nothing but</line>
<line>flour, water, and bacon grease, Strangely enough, how-</line>
<line>ever, no condiments, not even salt, are provided on</line>
<line>the table, to the detriment of otherwise very good</line>
<line>meals. While meat here is unrationed and is plentiful,</line>
<line>toilet paper; believe it or not, is rationed. A</line>
<line>5¢ roll must last a prisoner 45 days, or else -- ?</line>
<line>Perhaps, however, a prisoner can purchase additional</line>
<line>if it should be necessary.</line></p>
<p><line>Please see that my subscriptions are transferred</line>
<line>here as soon as possible from Fort Jay. Give Florence</line>
<line>and Helen my regards, and thank Joe for his</line>
<line>efforts in my behalf in managing my business.</line>
<line>Find out from Joe how tube deliveries are at the</line>
<line>present time, first to satisfy my curiosity; and</line>
<line>also let me know if you are receiving your</line>
<line>remittance regularly from him. If he is not</line>
<line>taking care of your support in accordance with</line>
<line>the instructions I left him, I wish to know it,</line>
<line>so I can write, and correct the matter.</line>
<line>You can tell Joe to subscribe to Electronics</line>
<line>magazine for me and send it to this address</line>
<line>direct from the publisher. He should also have a copy</line>
<line>of Palmer's "Calculus for Home Study," sent me by the publisher,</line>
<line>whose name he can obtain from Ulbrichs. In future letters I'll</line>
<line>copy the "Prisoner's Handbook" issued here, and the</line>
<line>contents of the detached letter form stub.</line>
</p>
<valediction>Love, Waldemar</valediction>
</body>
</text>
由于我只需要在输出xml中表示一些元素,我的xsl只使用了一些模板,剩下的就是空的:
<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns="http://relaxng.org/ns/structure/1.0">
<xsl:output method="xml" indent="yes"/>
<xsl:template match="/">
<dc><xsl:apply-templates select="document"></xsl:apply-templates></dc>
</xsl:template>
<xsl:template match="description/creator/name">
<creator><xsl:value-of select="."/></creator>
</xsl:template>
<xsl:template match="description/title">
<title><xsl:value-of select="."/></title>
</xsl:template>
<xsl:template match="description/date">
<date><xsl:value-of select="."/></date>
</xsl:template>
<xsl:template match="description/source">
<publisher><xsl:value-of select="."/></publisher>
</xsl:template>
<source></source>
<description></description>
<subject></subject>
<coverage></coverage>
<contributor></contributor>
<identifier></identifier>
<relation></relation>
<rights></rights>
<language></language>
<type></type>
<format></format>
文档验证,输出Dublin Core元素中显示正确的元数据。问题是,xml的其余部分 - 我不需要 - 也出现在<publisher>
元素之后。如何让所有其他文本从输出中消失?
答案 0 :(得分:2)
由于内置模板处理了与您的任何自定义模板不匹配的所有元素。您可以添加以下模板来修复它,只需对当前XSL进行最小的更改:
<xsl:template match="*">
<xsl:apply-templates select="*"/>
</xsl:template>
答案 1 :(得分:2)
或者只是简单地说:
<xsl:stylesheet version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
xmlns="http://relaxng.org/ns/structure/1.0">
<xsl:output method="xml" indent="yes"/>
<xsl:template match="/document">
<dc>
<creator><xsl:value-of select="description/creator/name"/></creator>
<title><xsl:value-of select="description/title"/></title>
<date><xsl:value-of select="description/date"/></date>
<publisher><xsl:value-of select="description/source"/></publisher>
<source/>
<description/>
<subject/>
<coverage/>
<contributor/>
<identifier/>
<relation/>
<rights/>
<language/>
<type/>
<format/>
</dc>
</xsl:template>
</xsl:stylesheet>
除了使样式表的可读性降低之外,这里的众多模板没有用处(假设每个描述元素只出现一次)。
请注意,空文字结果元素必须位于模板中才能显示在输出中。