Это мой первый набег на XSLT, так что я мог бы сделать что-то совершенно неправильно. Это минимальный репрограмм (который не работает), но в конечном решении я знаю только, что желаемое значение находится на 2 уровня от узла DETAIL.Невозможно получить значение атрибута на узле предка в XSLT
У меня есть следующий фрагмент XSLT (XSLT 1.0 и не может обновить до 2.0)
<xsl:template match="/">
<xsl:apply-templates select="//DETAIL"/>
</xsl:template>
<xsl:template match="DETAIL">
<br/>Current: <xsl:value-of select="@Name"/>
<br/>Ancestor: <xsl:value-of select="../../@Name"/>
</xsl:template>
У меня есть следующий XML-файл
<?xml version="1.0" encoding="utf-8"?>
<ROOT Name="Desired">
<CHILD>
<DETAIL Name="NotTheDesired">
</DETAIL>
</CHILD>
</ROOT>
что приводит (не уведомление не выход для атрибута предка) при обработке в IE 11 в Windows 10, но работает (дает правильное значение для атрибута предка) при обработке с помощью .NET XslCompiledTransform.
Current: NotTheDesired
Ancestor:
Я попытался многочисленные вариации этой темы в том числе с использованием строки() вокруг выбора выражения и т.д. Каждый перестановкой, что я пытался в результате чего не выход для значения атрибута предка.
Я не писал код для преобразования в IE, но ниже - это то, что делается. xml - это сериализованная версия xml. xsltDoc является XLST
var xmlDoc = new windows.ActivbeXObject("MSXML2.DOMDocument.6.0");
xmlDoc.async = false;
xmlDoc.loadXml(xml);
xmlDoc.resolveExternals = true;
var htmlString = xmlDoc.transformNode(xsltDoc);
Ваш XSLT фрагмент выглядит отлично. Тестирование на http://xsltransform.net/ncdD7mU показывает, что все счастливы! У вас есть другие шаблоны в XSLT? Благодаря! –
Итак, как вы запускаете XSLT с IE, используя скрипт, используя инструкцию обработки 'xml-stylesheet'? Если вы хотите опубликовать минимальный репрограмм, то покажите минимальную, но полную таблицу стилей вместе с объяснением того, как вы используете этот XSLT в IE. Когда я загружаю http://home.arcor.de/martin.honnen/xslt/test2016020901.xml, который использует http://home.arcor.de/martin.honnen/xslt/test2016020901.xsl, то и Edge, и IE show 'Current: NotTheDesired Ancestor: Desired' в Windows 10. –
@martin Отредактировал вопрос, чтобы включить информацию о том, как выполняется преобразование. Будет пытаться вырезать достаточно материала для полного воспроизведения. –