У меня есть следующий (упрощенный) XML, который я получаю в системной среде:
<?xml version="1.0" encoding="UTF-8"?>
<root>
<IS_LOG>
<USER>19291</USER>
<DATE>2011-08-15</DATE>
<TIME>15:36:36</TIME>
<SYST>sy1</SYST>
<MATERIALS>
<item>
<sy>100</sy>
<mat>000000000000310000</mat>
</item>
<item>
<sy>100</sy>
<mat>000000000000491078</mat>
</item>
</MATERIALS>
</IS_LOG>
</root>
Система, с которой я работаю, передает мне переменную во время выполнения, которая не включена в структуру XML выше.
У меня есть следующий XSLT:
<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
xmlns:xd="http://www.oxygenxml.com/ns/doc/xsl" version="1.0">
<!-- System variable whose value I normally only get only at runtime;
for test purposes set locally -->
<xsl:variable name="SenderService" select="'AT'"/>
<xsl:template match="@*|node()">
<xsl:choose>
<xsl:when test="$SenderService='AT'">
<xsl:copy>
<xsl:apply-templates mode="AT" select="@*|node()"/>
</xsl:copy>
</xsl:when>
<xsl:otherwise>
<xsl:copy>
<xsl:apply-templates select="@*|node()"/>
</xsl:copy>
</xsl:otherwise>
</xsl:choose>
</xsl:template>
<xsl:template mode="AT" match="item[mat > 000000000000299999 and mat < 000000000000399999]"/>
</xsl:stylesheet>
Теперь мне нужно скопировать все элементы item
, за исключением тех, где mat
находится в диапазоне номеров от 300000 до 399999 и SenderService
я сидела'.Если проверить его локально, я изменяю SenderService
в моем XSLT, например, на 'Z', вывод выглядит нормально, все items
копируются:
<?xml version="1.0" encoding="UTF-8"?>
<root>
<IS_LOG>
<USER>19291</USER>
<DATE>2011-08-15</DATE>
<TIME>15:36:36</TIME>
<SYST>sy1</SYST>
<MATERIALS>
<item>
<sy>100</sy>
<mat>000000000000310000</mat>
</item>
<item>
<sy>100</sy>
<mat>000000000000491078</mat>
</item>
</MATERIALS>
</IS_LOG>
</root>
Но если я установлю SenderService
в 'В этом случае результат выглядит следующим образом:
<?xml version="1.0" encoding="UTF-8"?><root>
19291
2011-08-15
15:36:36
sy1
100
000000000000491078
</root>
Копируется правильный элемент, но без тегов.Кто-нибудь знает, как изменить XSLT?
Спасибо за помощь, Питер