2010-07-21 5 views
4

Я преобразуя некоторые данные XML, чтобы вписаться в документ, который находится в формате «Excel XML Spreadsheet 2003»XML - XSLT преобразование - производство специальных «<? ... ?>» тег

Это все работает нормально, но у меня есть проблема с генерированием правильного заголовка файла результата. Она должна быть в основном в виде:

<?xml version="1.0"?> 
<?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"> 

<!-- end of header here and the transformation data goes below --> 

<Workbook> 

файл XSLT является

<?xml version="1.0" encoding="utf-8"?> 
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"> 
    <xsl:output method="xml" version="1.0" encoding="utf-8" indent="yes" media-type="text/xml"/> 
    <xsl:template match="/"> 
<?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"> 

, но в результате файл <?mso-application progid="Excel.Sheet"?> линия отсутствует.

Я понимаю, что <? ...?> это специальный тег - так может возникнуть вопрос в том, как это может быть получено с помощью XSLT

Благодаря

+0

какой язык программирования вы используете? Если это php, попробуйте отключить short_tags из php.ini – Sarfraz

+0

@sAc - спасибо за комментарий, я не был php, я искал общий подход xsl, и Alejandro предоставил ответ, который я искал – kristof

ответ

12

С любого входа, эту таблицу стилей:

<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"> 
    <xsl:output method="xml" version="1.0" encoding="utf-8" indent="yes" media-type="text/xml"/> 
    <xsl:template match="/"> 
     <xsl:processing-instruction name="mso-application">progid="Excel.Sheet"</xsl:processing-instruction> 
     <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"/> 
    </xsl:template> 
</xsl:stylesheet> 

Результат:

<?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" /> 
+0

спасибо Alejandro, у меня не было Идея, что xsl: имя тега, чтобы искать – kristof

+0

@ kristof: Вы хорошо! Также неплохо изучить спецификации XSLT в http://www.w3.org/TR/xslt – 2010-07-21 15:28:57

Смежные вопросы