Мне нужна большая помощь от вас, я полностью потерялся в этой проблеме, я все время гуглю, но ничего, что может мне помочь. Когда я нашел некоторые решения, это не сработало ….. Помогите мне, пожалуйста: /
Отредактируйте его в PHP или XSLT, Thx.
Входные данные:
<SHOP>
<SHOPITEM>
<PRODUCTNAME>Table</PRODUCTNAME>
<DESCRIPTION>slaklasdk askdalsd dsasd</DESCRIPTION>
<URL>http://www.google.com/</URL>
<IMGURL>http://www.google.com/</IMGURL>
<PRICE>79</PRICE>
<CATEGORIES>
<CATEGORY>Work, table</CATEGORY>
</CATEGORIES>
<MOTIVES>
<MOTIVE>Brown oak</MOTIVE>
</MOTIVES>
<SIZES>
<SIZE>
<SIZEID>38626</SIZEID>
<SIZENAME>uni</SIZENAME>
<STOREPIECES>12</STOREPIECES>
</SIZE>
</SIZES>
</SHOPITEM>
<SHOPITEM>
<PRODUCTNAME>Book</PRODUCTNAME>
<DESCRIPTION>asdasdasdawra asdaseasd</DESCRIPTION>
<URL>http://www.google.com/</URL>
<IMGURL>http://www.google.com/</IMGURL>
<PRICE>79</PRICE>
<CATEGORIES>
<CATEGORY>Book, Magazine</CATEGORY>
</CATEGORIES>
<MOTIVES>
<MOTIVE>Black with blue stars</MOTIVE>
</MOTIVES>
<SIZES>
<SIZE>
<SIZEID>38626</SIZEID>
<SIZENAME>uni</SIZENAME>
<STOREPIECES>0</STOREPIECES>
</SIZE>
</SIZES>
</SHOPITEM>
Я НУЖДАЮСЬ:
1) Удалить <URL> and <IMGURL>
2)<PRODUCTNAME>
переименовать <title>
3)<CATEGORIES>
удалить и переименовать <CATEGORY> on <ctg_0>
4)<MOTIVE>
слиться с <DESCRIPTION>
и удалить <MOTIVES>,<MOTIVE>
5) удалить <SIZES>, <SIZE> and <SIZEID>
после этого <SIZENAME>
слиться с <DISCRIPTION>
и добавить новый элемент <unit>0</unit>
и переименовать <STOREPIECES>
на <pieces>
Выход:
<SHOP>
<SHOPITEM>
<title>Table</title>
<DESCRIPTION>slaklasdk askdalsd dsasd, Motive:Brown oak, size:uni</DESCRIPTION>
<PRICE>79</PRICE>
<ctg_0>Book, Magazine</ctg_0>
<pieces>12</pieces>
<unit>0</unit>
</SHOPITEM>
<SHOPITEM>
<title>Book</title>
<DESCRIPTION>asdasdasdawra asdaseasd, Motive:Black with blue stars, size:uni</DESCRIPTION>
<PRICE>79</PRICE>
<ctg_0>Book, Magazine</ctg_0>
<pieces>0</pieces>
<unit>0</unit>
</SHOPITEM>
</SHOP>
Выучи XSL. Быстрый ускоренный курс:
xsl сначала сопоставляет наименее общее соответствие, поэтому если у вас есть правило для * и правило для URL, оно будет применять правило для URL вместо *.
, текущий узел
* все дочерние узлы текущего узла.
text () — это весь текст под текущим узлом или один текстовый узел в совпадении.
@ * — это все атрибуты текущего узла.
name (.) — имя текущего узла.
Следовательно, это рекурсивно копирует (по частям) каждый узел / текст / атрибут в файле:
<xsl:template match="*">
<xsl:element name="{name(.)}">
<xsl:apply-templates select="*|@*|text()"/>
</xsl:element>
</xsl:template>
<xsl:template match="@*|text()">
<xsl:copy-of select='.'/>
</xsl:template>
Теперь добавьте более конкретные совпадения для тех, кого вы хотите изменить. Если вы хотите удалить узел:
<xsl:template match="URL|IMGURL"/><!-- Do nothing, don't copy it -->
Помните, что более конкретное соответствие на первом месте Переименовав узел, замените {name (.)} (Имя текущего узла) тем, на что вы хотите изменить его.
Это должно помочь вам начать, остальное зависит от вас.
Других решений пока нет …