Я новичок в 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() > 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>
Если кто-то может мне помочь, я потерян с этим ... :(