我有三个xml结构需要通过创建一个元素(如果它缺失)或通过选择它(如果已经存在)来进行清理和均质化。
结构A包含我需要的大部分元素:
<biblStruct>
<analytic>
<title type="label">Gronemann/Maaß/Peters/Schrader 2001</title>
<title type="titel">Körper und Schrift. Beiträge zum 16. Nachwuchskolloquium der
Romanistik, Leipzig, 14.-17. Juni 2000</title>
<idno>6677</idno>
<idno>6677</idno>
<author>
<persName>Gronemann, Claudia;Maaß, Christiane;Peters, Sabine A.;Schrader,
Sabine</persName>
</author>
</analytic>
<monogr>
<title type="label">Gronemann/Maaß/Peters/Schrader 2001</title>
<title type="titel">Körper und Schrift. Beiträge zum 16. Nachwuchskolloquium der
Romanistik, Leipzig, 14.-17. Juni 2000</title>
<idno type="standortsign">UB Bern;SUB Göttingen</idno>
<author>
<persName>Gronemann, Claudia;Maaß, Christiane;Peters, Sabine A.;Schrader,
Sabine</persName>
</author>
<imprint>
<publisher>Romanistischer Verlag</publisher>
<pubPlace>
<placeName>Bonn</placeName>
</pubPlace>
<date>2001</date>
</imprint>
</monogr>
<relatedItem type="enhalt">
<ref>Objekt 3257 / Biographien-Werke</ref>
</relatedItem>
<note type="faustdb">biogra</note>
<note type="objektart">Bibliographie</note>
<note type="objektart">Bibliographie</note>
<note type="erstellt">
<date>2016-09-18T00:00:00.000</date>
</note>
<note type="letztebearb">
<date>2016-09-18T00:00:00.000</date>
</note>
</biblStruct>
而结构B缺少publisher
内的元素imprint
:
<biblStruct>
<analytic>
<title type="label">Volmer 2001</title>
<title type="titel">Die Gebrechen des Lebens. Zur Körpererfahrung in
Korrespondenzen des 18. Jahrhunderts</title>
<idno>3257</idno>
<idno>3257</idno>
<author>
<persName>Volmer, Annett</persName>
</author>
</analytic>
<monogr>
<title type="label">Volmer 2001</title>
<title type="titel">Die Gebrechen des Lebens. Zur Körpererfahrung in
Korrespondenzen des 18. Jahrhunderts</title>
<idno type="standortsign">UB Basel: AP IX 5844</idno>
<author>
<persName>Volmer, Annett</persName>
</author>
<imprint>
<biblScope unit="sammelwerkin">Objekt 6677 / Biographien-Werke</biblScope>
<biblScope unit="sammelwerkseiten">138-149</biblScope>
</imprint>
</monogr>
<note type="faustdb">biogra</note>
<note type="objektart">Bibliographie</note>
<note type="objektart">Bibliographie</note>
<note type="erstellt">
<date>2005-01-19T00:00:00.000</date>
</note>
<note type="letztebearb">
<date>2016-10-10T00:00:00.000</date>
</note>
<note type="kategorie">Briefkultur, Netzwerke,
Transfer;Wissen(schaft)sgeschichte/Medizin</note>
</biblStruct>
我希望能够创建嵌套在publisher
内的imprint
元素,当它只缺少时 - 我正在处理一个包含非常多样化条目的巨大列表。
同样适用于结构C,它缺少更多元素:
<biblStruct>
<analytic>
<idno>24587</idno>
<idno>24587</idno>
<author>
<persName>Person aus Ref-Tabelle</persName>
</author>
</analytic>
<note type="faustdb">Publik</note>
<note type="objektart">Rezensionen</note>
<note type="objektart">Rezensionen</note>
</biblStruct>
在这种情况下,我想在以下元素之后添加analytic
:
<monogr>
<imprint>
<publisher></publisher>
</imprint>
</monogr>
所以输出应该是:
<biblStruct>
<analytic>
<idno>24587</idno>
<idno>24587</idno>
<author>
<persName>Person aus Ref-Tabelle</persName>
</author>
</analytic>
<monogr>
<imprint>
<publisher></publisher>
</imprint>
</monogr>
<note type="faustdb">Publik</note>
<note type="objektart">Rezensionen</note>
<note type="objektart">Rezensionen</note>
</biblStruct>
此时元素是否为空并不重要。知道我怎么能做到这一点?
请记住,所有这些xml条目都在同一个文件中,我无法对它们进行排序,因此我需要创建所需的元素,如果它们已经存在或者它们尚不存在则考虑在内。谢谢!
答案 0 :(得分:0)
感谢您的评论。我尝试了这个,它适用于第一种情况:
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
xmlns:xs="http://www.w3.org/2001/XMLSchema" exclude-result-prefixes="xs tei" version="2.0"
xmlns:tei="http://www.tei-c.org/ns/1.0">
<xsl:template match="@* | node()">
<xsl:copy>
<xsl:apply-templates select="@* | node()"/>
</xsl:copy>
</xsl:template>
<xsl:template match="tei:imprint[not(./tei:publisher)]">
<xsl:copy>
<xsl:element name="tei:publisher"> </xsl:element>
</xsl:copy>
</xsl:template>