首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >将斜体XML标签转换为WordML标签

将斜体XML标签转换为WordML标签
EN

Stack Overflow用户
提问于 2012-09-18 09:01:43
回答 2查看 441关注 0票数 2

我只需要将XML文档转换为WordML文档(如果可以称之为简单的话!)使用此表单(不带处理指令):

代码语言:javascript
复制
<body>
    <p>
        <r>This is the <italic>standard</italic> text run.</r> 
    </p>
</body>

根据WordML文档,转换后的XML应该如下所示:

代码语言:javascript
复制
<w:body>
    <w:p>
        <w:r>
            <w:t>This is the </w:t> 
        </w:r>
    </w:p>
    <w:p>
        <w:pPr>
            <w:i/>
        </w:pPr>
        <w:r>
            <w:t>standard</w:t> 
        </w:r>
    </w:p>
    <w:p>
        <w:r>
            <w:t> text run.</w:t> 
        </w:r>
    </w:p>
</w:body>

我应该如何创建XSLT转换以正确处理斜体标记??.

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2012-09-18 11:04:02

此转换

代码语言:javascript
复制
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
  xmlns:w="some:w" exclude-result-prefixes="w">
 <xsl:output omit-xml-declaration="yes" indent="yes"/>

 <xsl:template match="body">
  <w:body>
   <xsl:apply-templates/>
  </w:body>
 </xsl:template>

 <xsl:template match="p/r/text()">
    <w:p>
        <w:r>
            <w:t><xsl:value-of select="."/></w:t>
        </w:r>
    </w:p>
 </xsl:template>

 <xsl:template match="p/r/italic/text()">
    <w:p>
        <w:pPr>
            <w:i/>
        </w:pPr>
        <w:r>
            <w:t><xsl:value-of select="."/></w:t>
        </w:r>
    </w:p>
 </xsl:template>
 <xsl:template match="text()"/>
</xsl:stylesheet>

在所提供的XML文档上应用时的

代码语言:javascript
复制
<body>
    <p>
        <r>This is the <italic>standard</italic> text run.</r>
    </p>
</body>

会生成想要的正确结果:

代码语言:javascript
复制
<w:body xmlns:w="some:w">
   <w:p>
      <w:r>
         <w:t>This is the </w:t>
      </w:r>
   </w:p>
   <w:p>
      <w:pPr>
         <w:i/>
      </w:pPr>
      <w:r>
         <w:t>standard</w:t>
      </w:r>
   </w:p>
   <w:p>
      <w:r>
         <w:t> text run.</w:t>
      </w:r>
   </w:p>
</w:body>
票数 1
EN

Stack Overflow用户

发布于 2012-09-18 10:13:31

对于像提供的示例这样简单的输入,可以使用以下样式表。将修改后的identity transform<italics>r/text()的专用模板一起使用。

代码语言:javascript
复制
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0"
        xmlns:w="http://schemas.microsoft.com/office/word/2003/wordml">
    <xsl:output indent="yes"/>

    <xsl:template match="@*|node()">
        <xsl:apply-templates select="@*|node()"/>
    </xsl:template>

    <xsl:template match="body">
        <w:body>
            <xsl:apply-templates/>
        </w:body>
    </xsl:template>

  <xsl:template match="r/text()">
      <w:p>
          <w:r>
              <w:t><xsl:value-of select="."/></w:t> 
          </w:r>
      </w:p>
  </xsl:template>

    <xsl:template match="r/italic">
        <w:p>
            <w:pPr>
                <w:i/>
            </w:pPr>
            <w:r>
                <w:t><xsl:value-of select="."/></w:t> 
            </w:r>
        </w:p>
    </xsl:template>  

</xsl:stylesheet>
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/12469071

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档