2011-02-02 3 views
0

Я использую xslt1.0. Я должен применить-шаблоны между узлами ш: instrText и вес: fldChar вес: fldCharType = "конец" /> и ... Пожалуйста, помогите мне ..применение шаблона между узлами

<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> 
+0

Вам нужно будет предоставить более подробную информацию, чем это - на что вы хотите преобразовать вышеуказанный XML? Что вы хотите вставить в выбранное вами местоположение? Вам нужно скопировать документ и добавить дополнительную информацию? – ColinE

+0

Спасибо за ваши рекомендации. Я хочу преобразовать этот xml в html, для этого мне нужен шаблон xslt. – vignesh

+0

Хороший вопрос, +1. См. Мой ответ для полного решения, используя ''. :) –

ответ

1

Это преобразование:

<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.

Смежные вопросы