Это преобразование:
<xsl:stylesheet version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
xmlns:w="w:w">
<xsl:output omit-xml-declaration="yes" indent="yes"/>
<xsl:strip-space elements="*"/>
<xsl:key name="kinBetween" match="w:r"
use="concat(generate-id(preceding-sibling::w:r[w:instrText][1]),
'+',
generate-id(following-sibling::w:r
[w:fldChar/@w:fldCharType='end'])
)
"/>
<xsl:template match="node()|@*">
<xsl:copy>
<xsl:apply-templates select="node()|@*"/>
</xsl:copy>
</xsl:template>
<xsl:template match="/*">
<t>
<xsl:apply-templates select=
"key('kinBetween',
concat(generate-id(w:r[w:instrText][1]),
'+',
generate-id(w:r[w:fldChar/@w:fldCharType='end'][1])
)
)
"/>
</t>
</xsl:template>
</xsl:stylesheet>
при нанесении на входе при условии (корректируется, чтобы быть правильно сформированный XML-документ):
<t xmlns:w="w:w">
<w:r w:rsidRPr="00ED1487" >
<w:rPr>
<w:i/>
<w:color w:val="E36C0A" w:themeColor="accent6" w:themeShade="BF"/>
</w:rPr>
<w:instrText xml:space="preserve"> DATE \@ "dddd, MMMM dd, yyyy" \* MERGEFORMAT </w:instrText>
</w:r>
<w:r w:rsidRPr="00ED1487">
<w:rPr>
<w:i/>
<w:color w:val="E36C0A" w:themeColor="accent6" w:themeShade="BF"/>
</w:rPr>
<w:fldChar w:fldCharType="separate"/>
</w:r>
<w:r w:rsidRPr="00ED1487">
<w:rPr>
<w:i/>
<w:noProof/>
<w:color w:val="E36C0A" w:themeColor="accent6" w:themeShade="BF"/>
</w:rPr>
<w:t>Wednesday</w:t>
</w:r>
<w:r>
<w:rPr>
<w:noProof/>
</w:rPr>
<w:t>, February 02, 2011</w:t>
</w:r>
<w:r>
<w:fldChar w:fldCharType="end"/>
</w:r>
</t>
процессов (с шаблоном идентичности, как не была необходимой никакой конкретной обработки) точно узлы в пределах требуемого интервала и производит нужный, правильный результат:
<t xmlns:w="w:w">
<w:r w:rsidRPr="00ED1487">
<w:rPr>
<w:i/>
<w:color w:val="E36C0A" w:themeColor="accent6" w:themeShade="BF"/>
</w:rPr>
<w:fldChar w:fldCharType="separate"/>
</w:r>
<w:r w:rsidRPr="00ED1487">
<w:rPr>
<w:i/>
<w:noProof/>
<w:color w:val="E36C0A" w:themeColor="accent6" w:themeShade="BF"/>
</w:rPr>
<w:t>Wednesday</w:t>
</w:r>
<w:r>
<w:rPr>
<w:noProof/>
</w:rPr>
<w:t>, February 02, 2011</w:t>
</w:r>
</t>
Объяснения: ключ с именем kinBetween
определяются и используется для идентификации всех элементов w:r
между двумя элементами w:r
с требуемыми свойствами для элемента start-interval-element и end-interval-element.
Вам нужно будет предоставить более подробную информацию, чем это - на что вы хотите преобразовать вышеуказанный XML? Что вы хотите вставить в выбранное вами местоположение? Вам нужно скопировать документ и добавить дополнительную информацию? – ColinE
Спасибо за ваши рекомендации. Я хочу преобразовать этот xml в html, для этого мне нужен шаблон xslt. – vignesh
Хороший вопрос, +1. См. Мой ответ для полного решения, используя ''. :) –