Я пытаюсь отобразить часть XML-файла Excel как HTML для улучшения предварительного просмотра при переводе (переводе на иностранный язык) части содержимого в инструменте автоматизированного перевода.XSLT трансформация - пространство имен/общая ошибка
У меня есть этот XML:
<?xml version="1.0" encoding="utf-8"?>
<?mso-application progid="Excel.Sheet"?>
<Workbook xmlns="urn:schemas-microsoft-com:office:spreadsheet"
xmlns:o="urn:schemas-microsoft-com:office:office"
xmlns:x="urn:schemas-microsoft-com:office:excel"
xmlns:ss="urn:schemas-microsoft-com:office:spreadsheet"
xmlns:html="http://www.w3.org/TR/REC-html40">
<Styles>
<Style ss:ID="Default">
<Alignment ss:Vertical="Bottom"/>
</Style>
<Style ss:ID="Header">
<Font ss:Bold="1"/>
</Style>
<Style ss:ID="DateFormat">
<NumberFormat ss:Format="General Date"/>
</Style>
</Styles>
<Worksheet ss:Name="ResultSet">
<Table>
<Row>
<Cell><Data ss:Type="Number"><![CDATA[149768]]></Data></Cell>
<Cell><Data ss:Type="String"><![CDATA["@" cannot be the first character in an e-mail address!]]></Data></Cell>
<Cell><Data ss:Type="String"><![CDATA[Multiword - Noun]]></Data></Cell>
<Cell><Data ss:Type="String"><![CDATA[]]></Data></Cell>
<Cell><Data ss:Type="String"><![CDATA[]]></Data></Cell>
<Cell><Data ss:Type="String"><![CDATA[Input validation message]]></Data></Cell>
<Cell><Data ss:Type="String"><![CDATA[]]></Data></Cell>
</Row>
</Table>
</Worksheet>
</Workbook>
Я пытаюсь взять второй элемент данных из каждой строки и отобразить его, но я не могу показать это на всех. Я думаю, что это имеет какое-то отношение к пространствам имен, и я должен что-то пропускать, но не могу понять, что. Это то, что я использую:
<?xml version="1.0" encoding="ISO-8859-1"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns="urn:schemas-microsoft-com:office:spreadsheet" xmlns:o="urn:schemas-microsoft-com:office:office" xmlns:x="urn:schemas-microsoft-com:office:excel" xmlns:ss="urn:schemas-microsoft-com:office:spreadsheet" xmlns:html="http://www.w3.org/TR/REC-html40">
<xsl:template match="/">
<html>
<body>
<xsl:for-each select="/Workbook/Worksheet/Table/Row"><br/>
<font color="#380000" size="3"><xsl:value-of select="/Cell[2]/Data"/></font><br/>
</xsl:for-each>
</body>
</html>
</xsl:template>
</xsl:stylesheet>
Может ли кто-нибудь помочь мне с этим?
Я хотел бы добавить, что я использую Древобородо, чтобы проверить это, и это подтверждает XML (который я не имею никакого контроля над) с этими ошибками ... добавление к моей путанице:
error: org.xml.sax.SAXParseException; lineNumber: 3; columnNumber: 10; Document is invalid: no grammar found. error: org.xml.sax.SAXParseException; lineNumber: 3; columnNumber: 10; Document root element "Workbook", must match DOCTYPE root "null".
Спасибо вам
Сообщение об ошибке указывает на то, что XML-документ имеет '' в начале, но вы вообще ничего не показывали. В любом случае, если у вас есть 'DOCTYPE', то следующее имя должно соответствовать имени корневого элемента, то есть если это« Рабочая книга », тогда в декларации должно быть указано« ». Что касается проблемы пространства имен, то это FAQ по отношению к XSLT и XPath, например, http://stackoverflow.com/questions/1730875/xslt-transform-xml-with-namespaces?rq=1. –