问题描述
十多年来,我使用 Word 到 HTML 的转换,它们是基于旧的 Word 2003 XML 格式构建的。现在转移到 .docx 总体来说并不是很难,因为 xmlns:w 和 xmlns:v 模式在很大程度上是相同的,即使 xmlns:w 命名空间 URI 已更改。但是我找不到一件事,那就是 wx:sect 和 wx:sub-section 元素。它们对我很有帮助,因为我会将它们转换为 HTML div 元素。
我在整个解压后的 .docx 树中搜索了 sect 和 sub-section 但找不到。我知道我可以根据样式名称对其进行结构化,但这需要大量额外的工作。所以希望我刚刚忽略了相应的注释/标记?
解决方法
wx:sect 和 wx:subsection 标签已从规范中删除。 XML 结构的其余部分非常相似。我创建了一个带有单个分节符的简单文档。在 .docx 文件中,它看起来像这样:
<w:body>
<w:p w14:paraId="55E1DD0B" w14:textId="754A9065" w:rsidR="00A934F5" w:rsidRDefault="00A934F5" w:rsidP="00857546"/>
<w:p w14:paraId="0AA91CED" w14:textId="77777777" w:rsidR="00701B63" w:rsidRDefault="00701B63" w:rsidP="00857546">
<w:pPr>
<w:sectPr w:rsidR="00701B63" w:rsidSect="00512022">
<w:headerReference w:type="even" r:id="rId6"/>
<w:headerReference w:type="default" r:id="rId7"/>
<w:footerReference w:type="even" r:id="rId8"/>
<w:footerReference w:type="default" r:id="rId9"/>
<w:headerReference w:type="first" r:id="rId10"/>
<w:footerReference w:type="first" r:id="rId11"/>
<w:pgSz w:w="12240" w:h="15840" w:code="1"/>
<w:pgMar w:top="720" w:right="720" w:bottom="720" w:left="720" w:header="360" w:footer="360" w:gutter="0"/>
<w:cols w:space="720"/>
<w:titlePg/>
<w:docGrid w:linePitch="360"/>
</w:sectPr>
</w:pPr>
</w:p>
<w:p w14:paraId="48926183" w14:textId="31B1BCEA" w:rsidR="00701B63" w:rsidRDefault="00701B63" w:rsidP="00857546"/>
<w:sectPr w:rsidR="00701B63" w:rsidSect="00701B63">
<w:type w:val="continuous"/>
<w:pgSz w:w="12240" w:h="15840" w:code="1"/>
<w:pgMar w:top="720" w:right="720" w:bottom="720" w:left="720" w:header="360" w:footer="360" w:gutter="0"/>
<w:cols w:space="720"/>
<w:titlePg/>
<w:docGrid w:linePitch="360"/>
</w:sectPr>
</w:body>
在 Word 2003 XML 文件中,它看起来像这样:
<w:body>
<wx:sect>
<w:p wsp:rsidR="00A934F5" wsp:rsidRDefault="00A934F5" wsp:rsidP="00857546"/>
<w:p wsp:rsidR="00701B63" wsp:rsidRDefault="00701B63" wsp:rsidP="00857546">
<w:pPr>
<w:sectPr wsp:rsidR="00701B63" wsp:rsidSect="00512022">
<w:hdr w:type="even">
<w:p wsp:rsidR="00023B1B" wsp:rsidRDefault="00023B1B">
<w:pPr>
<w:pStyle w:val="Header"/>
</w:pPr>
</w:p>
</w:hdr>
<w:hdr w:type="odd">
<w:p wsp:rsidR="00023B1B" wsp:rsidRDefault="00023B1B">
<w:pPr>
<w:pStyle w:val="Header"/>
</w:pPr>
</w:p>
</w:hdr>
<w:ftr w:type="even">
<w:p wsp:rsidR="00023B1B" wsp:rsidRDefault="00023B1B">
<w:pPr>
<w:pStyle w:val="Footer"/>
</w:pPr>
</w:p>
</w:ftr>
<w:ftr w:type="odd">
<w:p wsp:rsidR="00023B1B" wsp:rsidRDefault="00023B1B">
<w:pPr>
<w:pStyle w:val="Footer"/>
</w:pPr>
</w:p>
</w:ftr>
<w:hdr w:type="first">
<w:p wsp:rsidR="00023B1B" wsp:rsidRDefault="00023B1B" wsp:rsidP="00857546">
<w:pPr>
<w:pStyle w:val="Header"/>
</w:pPr>
</w:p>
</w:hdr>
<w:ftr w:type="first">
<w:p wsp:rsidR="00023B1B" wsp:rsidRDefault="00023B1B" wsp:rsidP="00857546"/>
</w:ftr>
<w:pgSz w:w="12240" w:h="15840" w:code="1"/>
<w:pgMar w:top="720" w:right="720" w:bottom="720" w:left="720" w:header="360" w:footer="360" w:gutter="0"/>
<w:cols w:space="720"/>
<w:titlePg/>
<w:docGrid w:line-pitch="360"/>
</w:sectPr>
</w:pPr>
</w:p>
</wx:sect>
<wx:sect>
<w:p wsp:rsidR="00701B63" wsp:rsidRDefault="00701B63" wsp:rsidP="00857546"/>
<w:sectPr wsp:rsidR="00701B63" wsp:rsidSect="00701B63">
<w:type w:val="continuous"/>
<w:pgSz w:w="12240" w:h="15840" w:code="1"/>
<w:pgMar w:top="720" w:right="720" w:bottom="720" w:left="720" w:header="360" w:footer="360" w:gutter="0"/>
<w:cols w:space="720"/>
<w:titlePg/>
<w:docGrid w:line-pitch="360"/>
</w:sectPr>
</wx:sect>
</w:body>
似乎程序员意识到他们不需要单独的标签来表示一个部分的开始和结束,所以他们把它去掉了。