基本上,我在寻找的this从子节点选择文本,而忽略文本节点
我处理的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我的例子“M书面方式(只有相关部分):
<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 ...
注意的是,在第二输出线的“写在寻找援助”缺少。因此,正如你所看到的,我设计了模板来输出只是“langusage”标签的“语言”部分,但是整个标签,包括“Finding aid in written”文本节点,正在输出代替。我不能确定文本节点是否存在,或者它将是第一个(或最后一个,还是在任何特定位置)。我也不能确定只有一个文本节点或一个子节点。所以,我不能使用依赖于简单地选择“[第x个]”节点(子节点或文本)的任何解决方案。
在这一点上,我会很感激任何建议,甚至有些关键字可以帮助我通过Google找到解决方案(到目前为止我还没有运气)。
您需要准确显示您想要的输出。对我来说并不清楚,并且您不会通过询问输出如'Finding Aid encoded by ...'(使用省略号)而实际上不出现在您的原始文档中。我应该如何知道你认为应该出现在“......”的位置?我无法读懂你的想法。 – 2012-07-10 19:14:17
@lwburk - 谢谢你让我知道你发现的问题不清楚。我填写了更多的示例输出。更好的是,我在示例下方以粗体文本的方式添加了一行以明确我要找的内容。我希望有所帮助。 – aarondev 2012-07-10 19:57:29
我还没有*完全*确定我明白,但我想你想要的只是选择*元素*的孩子。我会为此添加一个答案,希望它对一些人有所帮助。 – 2012-07-11 05:16:12