开发者

DOCX table to xml using XSL

I have a docx file with a working-schedule table like so:

        monday | tuesday | wednesday | thursday | friday | saturday | sunday
Peter     5    |   4     |           |    6     |   5    |          |   11
John      2    |         |    1      |    6     |   5    |     4    |
etc..

I extracted the document.xml from the docx and am trying to create the following xml using this xml.

<schedule>
   <monday>
     <shift name="Peter" time="5" />
     <shift name="John"  time="2" />
   </monday>
   <tuesday>
 etc...

The only thing that I don't know how to do yet is add the shifts to the appropriate day. The xml I managed to get is:

<schedule>
   <monday>
     <shift name="Peter" time="5" />
   </monday>
   <monday>
     <shift name="John"  time="2" />
   </monday>
   <tu开发者_StackOverflow社区esday>
etc..

How do i fix this?

Attachements: the document.xml (extracted from the docx) HERE the xsl I created HERE


Apply to your current result this transformation (Muenchian grouping):

<xsl:stylesheet version="1.0"
 xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
 <xsl:output omit-xml-declaration="yes" indent="yes"/>
 <xsl:strip-space elements="*"/>
 <xsl:key name="kDayByName" match="/*/*" use="name()"/>

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

 <xsl:template match="/*/*"/>

 <xsl:template match=
  "/*/*[generate-id()
       =
        generate-id(key('kDayByName', name())[1])
       ]
  ">

  <xsl:copy>
    <xsl:apply-templates select=
        "key('kDayByName', name())/node()"/>
  </xsl:copy>
 </xsl:template>
</xsl:stylesheet>

when applied on this XML document:

<schedule>
    <monday>
        <shift name="Peter" time="5" />
    </monday>
    <monday>
        <shift name="John"  time="2" />
    </monday>
</schedule>

the wanted, correct result is produced:

<schedule>
    <monday>
        <shift name="Peter" time="5" />
        <shift name="John" time="2" />
    </monday>
</schedule>
0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜