powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / XML, XSL, XPath, XQuery [игнор отключен] [закрыт для гостей] / Как сформулировать запрос?
2 сообщений из 2, страница 1 из 1
Как сформулировать запрос?
    #34331563
Stanislav86
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Добрый день, столкнулся с проблемой как выполнить запрос для такого случая, существует XML файл следующего формата :

<root>
<Entity>
<EntityID>1</EntityID>
</Entity>
....
....
<objects>
<object>
<EntityID>1</EntityID>
<object>
<object>
<EntityID>1</EntityID>
<object>
.....
.....
</objects>
</root>

нужно написать выражение которое выводит количество "<object>" у которых EntityID совпадает с "Entity.EntityID", может у кого то уже возникала подобная проблема?

Заранее благодарен :)
...
Рейтинг: 0 / 0
Как сформулировать запрос?
    #34332287
SuSa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Написал, токо немного подругому выглядит, до ума доводи сам, как тебе надо:
xml:
<?xml version="1.0" encoding="UTF-8"?>
<root>
<Entity>
<EntityID>3</EntityID>
</Entity>
<objects>
<object>
<EntityID>2</EntityID>
</object>
<object>
<EntityID>3</EntityID>
</object>
</objects>
</root>

xsl:

<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="2.0"
xmlns:sch="http://www.ascc.net/xml/schematron">

<xsl:template match="/">
<xsl:apply-templates select="//objects/object"/>
</xsl:template>

<xsl:template match="object">
<xsl:message>zahel</xsl:message>
<xsl:text>
</xsl:text>
<xsl:value-of select="position()"/>)=<xsl:value-of select="EntityID/text()"/>;
<xsl:variable name="filter">
<xsl:apply-templates select="preceding-sibling::object" mode="inner">
<xsl:with-param name="foo" select="EntityID/text()"/>
</xsl:apply-templates>
</xsl:variable>
<xsl:choose>
<xsl:when test="current()/EntityID/text() != //Entity/EntityID/text()">не совпал </xsl:when>
<xsl:otherwise> совпал </xsl:otherwise>
</xsl:choose>
</xsl:template>

<xsl:template match="object" mode="inner">
<xsl:param name="foo"/>
<xsl:if test="$foo = //Entity/EntityID/text()">
<xsl:value-of select="position()"/>,
</xsl:if>
</xsl:template>
</xsl:stylesheet>

результат:

<?xml version="1.0" encoding="UTF-8"?>
1) =2;
не совпал
2) =3;
совпал
...
Рейтинг: 0 / 0
2 сообщений из 2, страница 1 из 1
Форумы / XML, XSL, XPath, XQuery [игнор отключен] [закрыт для гостей] / Как сформулировать запрос?
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]