Преобразование XML в браузере не работает - PullRequest
0 голосов
/ 03 апреля 2012

Я разработал таблицу стилей XML для преобразования относительно простого файла XML в VS2010.Когда я запускаю XSLT Debugging в VS, он отображает ожидаемый результат в новом окне.

Поэтому я добавил ссылку на файл XSLT в исходном XML:

<?xml-stylesheet type="text/xsl" href="ABC.xslt"?>

Однакокогда я просматриваю этот файл в браузере, я не получаю преобразованный результат.В IE9, Firefox и Chrome

XSLT (возможно, в измененной форме) будет использоваться третьей стороной для создания окончательного XML, поэтому это не обязательно, так как он работает - но это полезный инструмент для демонстрации того, чтовывод из базы данных out (которая генерирует начальный XML) после преобразования будет выглядеть как конечный XML-код.

Пример XML:

<?xml version="1.0" encoding="utf-8"?>
<?xml-stylesheet type="text/xsl" href="abc.xslt"?>
<afterTreatmentSystemRequest>
    <afterTreatmentSystem>
        <ID>93073010005597</ID>
        <shipmentDate>20120330</shipmentDate>
        <technicalApprovalDate>20120330</technicalApprovalDate>
    </afterTreatmentSystem>
    <executionSettingsDate>2012-03-30T14:17:26</executionSettingsDate>
</afterTreatmentSystemRequest>

XSLT:

<?xml version="1.0" encoding="utf-8"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
    xmlns:msxsl="urn:schemas-microsoft-com:xslt" exclude-result-prefixes="msxsl"
>
    <xsl:output method="xml" indent="yes"/>

    <xsl:template match="/afterTreatmentSystemRequest">
            <nsmajorassemblyai:storeAfterTreatmentSystemRequest category="MajorAssemblyAdapter" delta="true" version="2.10" xmlns:nsmajorassemblyai="http://majorassembly.mysite.com/ai">
                <requestHeader userId="d2vswen"/>
                <xsl:apply-templates select="afterTreatmentSystem" />
                <xsl:apply-templates select="executionSettingsDate" />
            </nsmajorassemblyai:storeAfterTreatmentSystemRequest>
    </xsl:template>

    <xsl:template match="afterTreatmentSystem">
            <afterTreatmentSystem delta="true" dataCardAvailable="true">
                <xsl:attribute name="id">
                    <xsl:value-of select="ID"/>
                </xsl:attribute>
                <activeCustomer addressCity="" addressCountry="" addressStreet="" addressZip="" customerNumber="" firstname="" name=""/>
                <activeProductDate>
                    <xsl:attribute name="shipmentDate">
                        <xsl:value-of select="shipmentDate"/>
                    </xsl:attribute>
                    <xsl:attribute name="technicalApprovalDate">
                        <xsl:value-of select="technicalApprovalDate"/>
                    </xsl:attribute>
                </activeProductDate>
            </afterTreatmentSystem>
    </xsl:template>

    <xsl:template match="executionSettingsDate">
            <executionSettings causation="plant" issueThreshold="err" systemPriority="2" unresolvedConflictAction="notifyAdmin" userId="d2vswen">
                <xsl:attribute name="date">
                    <xsl:value-of select="."/>
                </xsl:attribute>
            </executionSettings>

    </xsl:template>
</xsl:stylesheet>

ОБНОВЛЕНИЕ : Я заново вставил сегменты XML и XSL - убедившись, что они соответствуют версиям, которые хорошо работают в VS2010.Следуя предложению Димитра использовать IE Developer Tools ( F12 ), я могу видеть, что некоторые преобразования произошли, но я все еще пропускаю элемент executeSettings.

Ожидаемый результат:

<?xml version="1.0" encoding="utf-8"?>
<nsmajorassemblyai:storeAfterTreatmentSystemRequest category="MajorAssemblyAdapter" delta="true" version="2.10" xmlns:nsmajorassemblyai="http://majorassembly.mysite.com/ai">
  <requestHeader userId="d2vswen" />
  <afterTreatmentSystem delta="true" dataCardAvailable="true" id="93073010005597">
    <activeCustomer addressCity="" addressCountry="" addressStreet="" addressZip="" customerNumber="" firstname="" name="" />
    <activeProductDate shipmentDate="20120330" technicalApprovalDate="20120331" />
  </afterTreatmentSystem>
  <executionSettings causation="plant" issueThreshold="err" systemPriority="2" unresolvedConflictAction="notifyAdmin" userId="d2vswen" date="2012-03-30T14:17:26" />
</nsmajorassemblyai:storeAfterTreatmentSystemRequest>

Ответы [ 2 ]

1 голос
/ 03 апреля 2012

Предыдущий ответ удален, так как вы исправили пример.

Это работает для меня, как с saxon6 в командной строке и IE (9) в браузере

enter image description here

1 голос
/ 03 апреля 2012

Преобразование выполняется правильно с IE9, но результат не отображается, так как это не HTML.

Чтобы убедиться в этом, нажмите F12 и разверните элементы на вкладке HTML.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...