0

示例 XML

   <xml version="1.0" encoding="UTF-8" standalone="yes"?>
   <w:wordDocument xmlns:w="http://schemas.microsoft.com/office/word/2003/wordml">
    <w:styles>
       <w:style w:type="paragraph" w:styleId="booktitle1">
            <w:name w:val="Book Title1" />
             <w:rPr>
                <w:b/>
             </w:rPr>       
       </w:style>
    </w:styles>
    <w:body>
    <w:p>
      <w:pPr><w:pStyle w:val="booktitle1"/></w:pPr>
      <w:r>
        <w:rPr>
         <w:rStyle w:val="booktitle1"/>
         </w:rPr>     
        <w:t>Book title</w:t>
      </w:r>
      <w:r wsp:rsidRPr="00C358DC">
          <w:rPr>
          <w:rStyle w:val="booktitle1"/>
          <w:b w:val="off"/>
        </w:rPr>
        <w:t> Author</w:t>
      </w:r>
    </w:p>
    </w:body>
   </w:wordDocument>

在这个示例 xml 中,para 文本格式信息(即粗体)在样式属性中定义。因此,该样式将对整个段落文本应用粗体格式。但是,单词“作者”连续属性会覆盖特定文本的粗体。因此,这些字符在段落文本中没有粗体出现。所以,我需要下面提到的使用 xslt 的输出 xml。

输出xml:

      <p class=”Book Title1”&gt;<b val=”on”&gt;Book title</b><b val=”off”&gt; Author</b></p>
         or
      <p class=”Book Title1”&gt;<b>Book title</b> Author</p>

有谁知道如何做到这一点?非常感谢任何想法或意见。

4

1 回答 1

0

RenderX 有一组处理 WordML 的样式表,其中当然包括在 WordML 中通过存储在文件中备用位置的等效样式来导航命名样式。我建议您检查他们是如何做到的并适应您的命名空间/等作为答案。如果它们不匹配。

它们位于http://www.renderx.com/tools/word2fo.html

而且我还要告诉你,这并不像你想象的那么简单。WordML 中的样式可以具有链接样式(而这些样式又可以具有其他链接样式……等等),而且您必须知道何时将默认样式应用于某些元素(w:p)而不是(当 aw:p在 aw:tc 或 aw:r 中,这是一个列表)。您必须对整个链接样式链进行编程,以正确的顺序应用它们,以实现与 Word 中的样式匹配。

虽然您可能认为这不是您问题的“答案”,但它确实是。

您提出了一个您认为很容易回答的问题,但我可以根据经验告诉您,RenderX 花费了很多人年的时间开发从 WordML 转换来解释样式的这些转换。

于 2013-11-12T06:36:17.617 回答