2011-12-20 2 views
2

Firefox сообщает мне «Ошибка при преобразовании XSLT: преобразование XSLT не удалось». для файла XML, который использует следующий файл XSL:«Преобразование XSLT не удалось» почему?

<?xml version='1.0' encoding='UTF-8'?> 
<xsl:stylesheet version="2.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" 
xmlns:dxp='http://schemas.google.com/analytics/2009' 
xmlns:gd='http://schemas.google.com/g/2005' 
xmlns:fn='http://www.w3.org/2005/xpath-functions'> 
<xsl:output method="html"/> 
<xsl:template match="/"> 
<html><head><title>...</title></head><body> 
<table frame='border' rules='all'> 
<tr><th>site</th><th>week</th><th>pages</th><th>pageviews</th></tr> 
<xsl:for-each select='feeds/feed/week'> 
    <xsl:for-each-group select='entry' group-by='fn:concat(
    if (fn:matches(dxp:dimension[@name="ga:pagePath"]/@value, "^/sales")) 
     then "/sales" 
     else "non-/sales", 
    " referred from ", 
    if (fn:matches(dxp:dimension[@name="ga:referralPath"]/@value, "^/forsale")) 
     then "/forsale" 
     else "non-/forsale" 
    )'> 
    <tr> 
     <td><xsl:value-of select='../dxp:tableName'/></td> 
     <td> 
     <xsl:value-of select='../dxp:startDate'/>-<xsl:value-of select='../dxp:endDate'/> 
     </td> 
     <td><xsl:value-of select='current-grouping-key()'/></td> 
     <td><xsl:value-of select="sum(current-group()/dxp:metric/@value)"/></td> 
    </tr> 
    </xsl:for-each-group> 
</xsl:for-each> 
</table></body></html> 
</xsl:template> 
</xsl:stylesheet> 

Не могу понять, что может быть неправильным. Кто-нибудь знает?

(Очевидно, если мне нужна дополнительная информация, чтобы кто-то мог ответить на это, я буду рад предоставить эту информацию: просьба прокомментировать ее. Я даже не знаю, какая информация может быть полезным)


EDIT:. Кто-то упомянул в ответ, что мой в том числе файл XML может помочь. Это очень долго, но его общая структура:

<?xml version='1.0' encoding='UTF-8'?> 
<?xml-stylesheet type='text/xsl' href='./foo.xsl'?> 
<feeds xmlns:dxp='http://schemas.google.com/analytics/2009' 
xmlns:gd='http://schemas.google.com/g/2005' > 
<feed><week> 
    <id>http://www.google.com/analytics/feeds/data?ids=ga:bar&amp;dimensions=ga:pagePath,ga:referralPath&amp;metrics=ga:pageviews&amp;filters=ga:medium%[email protected]&amp;start-date=2011-12-11&amp;end-date=2011-12-17</id> 
    <link rel='self' type='application/atom+xml' href='https://www.google.com/analytics/feeds/data?max-results=10&amp;end-date=2011-12-17&amp;start-date=2011-12-11&amp;metrics=ga%3Apageviews&amp;ids=ga%3Abar&amp;dimensions=ga%3ApagePath%2Cga%3AreferralPath&amp;filters=ga%3Amedium%3D%40referral'/> 
    <link rel='next' type='application/atom+xml' href='https://www.google.com/analytics/feeds/data?start-index=11&amp;max-results=10&amp;end-date=2011-12-17&amp;start-date=2011-12-11&amp;metrics=ga%3Apageviews&amp;ids=ga%3Abar&amp;dimensions=ga%3ApagePath%2Cga%3AreferralPath&amp;filters=ga%3Amedium%3D%40referral'/> 
     <dxp:metric confidenceInterval='0.0' name='ga:pageviews' type='integer' value='9999'/> 
     <dxp:tableName>bar</dxp:tableName> 
    <dxp:endDate>2011-12-17</dxp:endDate> 
    <dxp:startDate>2011-12-11</dxp:startDate> 
    <entry gd:etag='W/&quot;baz.&quot;' gd:kind='analytics#datarow'> 
     <dxp:dimension name='ga:pagePath' value='/'/> 
     <dxp:dimension name='ga:referralPath' value='/'/> 
     <dxp:metric confidenceInterval='0.0' name='ga:pageviews' type='integer' value='999'/> 
    </entry> 
    <entry gd:etag='W/&quot;baz.&quot;' gd:kind='analytics#datarow'> 
     <dxp:dimension name='ga:pagePath' value='/'/> 
     <dxp:dimension name='ga:referralPath' value='/xyzzy1'/> 
     <dxp:metric confidenceInterval='0.0' name='ga:pageviews' type='integer' value='999'/> 
    </entry> 
</week> 
</feed> 
<feed><week> 
    <id>http://www.google.com/analytics/feeds/data?ids=ga:bar2&amp;dimensions=ga:pagePath,ga:referralPath&amp;metrics=ga:pageviews&amp;filters=ga:medium%[email protected]&amp;start-date=2011-12-11&amp;end-date=2011-12-17</id> 
    <link rel='self' type='application/atom+xml' href='https://www.google.com/analytics/feeds/data?max-results=10&amp;end-date=2011-12-17&amp;start-date=2011-12-11&amp;metrics=ga%3Apageviews&amp;ids=ga%3Abar2&amp;dimensions=ga%3ApagePath%2Cga%3AreferralPath&amp;filters=ga%3Amedium%3D%40referral'/> 
    <link rel='next' type='application/atom+xml' href='https://www.google.com/analytics/feeds/data?start-index=11&amp;max-results=10&amp;end-date=2011-12-17&amp;start-date=2011-12-11&amp;metrics=ga%3Apageviews&amp;ids=ga%3Abar2&amp;dimensions=ga%3ApagePath%2Cga%3AreferralPath&amp;filters=ga%3Amedium%3D%40referral'/> 
     <dxp:metric confidenceInterval='0.0' name='ga:pageviews' type='integer' value='9999'/> 
     <dxp:tableName>bar2</dxp:tableName> 
    <dxp:endDate>2011-12-17</dxp:endDate> 
    <dxp:startDate>2011-12-11</dxp:startDate> 
    <entry gd:etag='W/&quot;baz.&quot;' gd:kind='analytics#datarow'> 
     <dxp:dimension name='ga:pagePath' value='/'/> 
     <dxp:dimension name='ga:referralPath' value='/'/> 
     <dxp:metric confidenceInterval='0.0' name='ga:pageviews' type='integer' value='999'/> 
    </entry> 
    <entry gd:etag='W/&quot;baz.&quot;' gd:kind='analytics#datarow'> 
     <dxp:dimension name='ga:pagePath' value='/'/> 
     <dxp:dimension name='ga:referralPath' value='/xyzzy2'/> 
     <dxp:metric confidenceInterval='0.0' name='ga:pageviews' type='integer' value='999'/> 
    </entry> 
</week> 
</feed> 
</feeds> 

ответ

1

Почему, по вашему мнению, Firefox использует процессор XSLT 2.0?

AFAIK, это не так.

Очевидно, что процессор XSLT 1.0 вызывает некоторую ошибку при предоставлении преобразования XSLT 2.0, которое содержит инструкции, отличные от XSLT 1.0, такие как <xsl:for-each-group>.

+0

Может ли кто-нибудь подтвердить, сможет ли Firefox (9.0.1) обрабатывать XSLT 2.0 ? – msh210

+0

@ msh210: Лучше искать «Поддержка XSLT 2.0 в Firefox» и подтвердить, что официального подтверждения такой поддержки нет. То, что ни один из основных браузеров сегодня не поддерживает XSLT 2.0, - это известный факт - мне интересно, почему вы верите Поддерживается XSLT 2.0. –

0

У вас есть файл пример XML валяется :) может помочь расследованию, что случилось с XSL.

В моем первом взгляде я увидел префикс пространства имен ga, который не упоминается в списке пространства имен в элементе xsl: stylesheet в вашем xsl.

Я также сомневаюсь, работает ли атрибут group-by в xsl: for-each-group. Похоже, вы пытаетесь динамически установить значение атрибута group-by, объединив некоторые результаты xpath, чтобы составить выражение xpath. Это невозможно.

+0

Это очень длинный файл XML. Должен ли я вставить его общую структуру в вопрос? – msh210

+1

Достаточно, чтобы XSL мог работать ... или даже не работать ... – Murph

+0

Согласен. Корневой элемент, содержащий 2 или 3 элемента, должен быть достаточным –

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