xslt преобразует ods в xml с несколькими листами - PullRequest
0 голосов
/ 23 марта 2020

Я новичок в XML и не могу найти в inte rnet, как я могу это сделать:

  • Я хочу преобразовать мой файл ODS в XML, но в СОД есть два разных листа.
  • Я хочу, чтобы первый лист представлял собой поток XML, а второй - только данные о состоянии c.

Я пытался:

<xsl:template match="table:table" table:name="sheet1">
<xsl:template match="table:table" ss:Name="sheet1">

... но это не сработало!

Это мой XSLT-файл:

<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet version="2.0" 
        xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
        xmlns:office="urn:oasis:names:tc:opendocument:xmlns:office:1.0"
        xmlns:table="urn:oasis:names:tc:opendocument:xmlns:table:1.0"
        xmlns:text="urn:oasis:names:tc:opendocument:xmlns:text:1.0"
        xmlns:xs="http://www.w3.org/2001/XMLSchema"
        xmlns:fn="http://www.w3.org/2005/xpath-functions"
        xmlns:ss="urn:schemas-microsoft-com:office:spreadsheet"
        exclude-result-prefixes="office table text xs fn ss">
    <xsl:output method="xml" indent="yes" encoding="UTF-8" omit-xml-declaration="no"/>

     <xsl:template match="/">
      <root>
       <xsl:apply-templates select="/*/office:body" />
      </root>
     </xsl:template>

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

     <xsl:template match="office:spreadsheet">
      <xsl:apply-templates />
     </xsl:template>        
    <!-- parse document -->
    <xsl:template match="table:table" table:name="sheet1">
        <xsl:for-each select="table:table-row[position() &gt; 1]">
            <formation>
                <FirstName><xsl:value-of select="table:table-cell[2]/text:p" /></FirstName> 
                <MiddleName><xsl:value-of select="table:table-cell[3]/text:p" /></MiddleName>
                <LastName><xsl:value-of select="table:table-cell[4]/text:p" /></LastName>   
                <EMail><xsl:value-of select="table:table-cell[5]/text:p" /></EMail>            
                <PhoneNumber><xsl:value-of select="table:table-cell[6]/text:p" /></PhoneNumber>
            </formation>
        </xsl:for-each>
    </xsl:template>    
</xsl:stylesheet>

Если кто-то может мне помочь, я потерян с этим ... :(

...