私は基本的にこれの反対を探しています
私が扱っているXMLの例:
<profiledesc>
<creation>
Finding Aid encoded by Some Guy, <date normal="2011-09-21">21 September 2011</date>
</creation>
<langusage encodinganalog="546">
Finding aid written in
<language langcode="eng" scriptcode="latn" encodinganalog="041">
English
</language>
</langusage>
</profiledesc>
私が書いている XSLT の例 (関連する部分のみ):
<xsl:template priority="3" match="descgrp|eadheader|filedesc|titlestmt|profiledesc|archdesc|langusage|did">
<xsl:apply-templates select="./child::node()"/>
</xsl:template>
<xsl:template priority="2" match="language">
<atom name="EADLanguageOfFindingAid" type="text" size="short">
<xsl:value-of select="."/>
</atom>
<atom name="EADLanguageCodeOfFindingAid" type="text" size="short">
<xsl:value-of select="normalize-space(@langcode)"/>
</atom>
</xsl:template>
... Other templates, for nodes like 'creation' ....
私が得ている(悪い)出力の例:
... Some other tags ...
<atom name="EADCreation" type="text" size="short">Finding Aid encoded by Some Guy, 21 September 2011</atom>
Finding aid written in
<atom name="EADLanguageOfFindingAid" type="text" size="short"> English </atom>
<atom name="EADLanguageCodeOfFindingAid" type="text" size="short">eng</atom>
... Some other tags ...
私が望む(良い)出力の例:
... Some other tags ...
<atom name="EADCreation" type="text" size="short">Finding Aid encoded by Some Guy, 21 September 2011</atom>
<atom name="EADLanguageOfFindingAid" type="text" size="short"> English </atom>
<atom name="EADLanguageCodeOfFindingAid" type="text" size="short">eng</atom>
... Some other tags ...
2 番目の出力では、"Finding aid written in" 行が欠落していることに注意してください。
ご覧のとおり、"langusage" タグの "language" 部分だけを出力するようにテンプレートを設計しましたが、代わりに "Finding aid written in" テキスト ノードを含むタグ全体が出力されています。テキストノードが存在するかどうか、またはそれが最初 (または最後、または特定の位置) になるかどうかはわかりません。また、テキスト ノードまたは子ノードが 1 つしかないかどうかもわかりません。そのため、単に「[xth]」ノード (子またはテキスト) を選択することに依存するソリューションを利用することはできません。
この時点で、Google を介して解決策を見つけるのに役立ついくつかのキーワードでさえ、アドバイスをいただければ幸いです (これまでのところ、うまくいきませんでした)。