Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/xslt/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Xslt 在节点之间应用模板_Xslt - Fatal编程技术网

Xslt 在节点之间应用模板

Xslt 在节点之间应用模板,xslt,Xslt,我正在使用xslt1.0。我必须在节点w:instrText和w:fldChar w:fldCharType=“end”/>之间应用模板,并且…请帮助我 <w:r w:rsidRPr="00ED1487"> <w:rPr> <w:i/> <w:color w:val="E36C0A" w:themeColor="accent6" w:themeShade="BF"/> </w:rPr>

我正在使用xslt1.0。我必须在节点w:instrText和w:fldChar w:fldCharType=“end”/>之间应用模板,并且…请帮助我

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

日期\@“dddd,MMMM dd,yyyy”\*合并格式
星期三
,2011年2月2日

此转换:

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

应用于提供的输入时(更正为格式良好的XML文档):


日期\@“dddd,MMMM dd,yyyy”\*合并格式
星期三
,2011年2月2日
在要求的时间间隔内准确地处理(由于不需要特定处理,所以使用标识模板)节点,并生成所需的正确结果

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

星期三
,2011年2月2日

解释:定义并使用名为
kinBetween
的键来标识两个
w:r
元素之间的所有
w:r
元素,这些元素具有开始间隔元素和结束间隔元素所需的属性。

您需要提供比此更详细的信息-您想转换什么上面的XML是什么?要在突出显示的位置插入什么?您需要复制文档并添加额外信息吗?感谢您的指导。我想将此xml转换为html,为此我需要一个xslt模板。好问题,+1。请参阅我的答案,了解使用
的完整解决方案:)@迪米特:事实上,这不是一个好问题……;)@迪米特雷-有点像给予中国最惠国贸易地位,或给予奥巴马总统诺贝尔和平奖?