Я знаю, это может показаться общей проблемой, но я не пробовал все подобные решения на этом сайте. Сейчас я пытаюсь использовать xslt для преобразования существующего XML-документа в XML-документ, который соответствует новой схеме. Я пытаюсь получить имя и partnum для каждого продукта. Но вместо этого я просто получаю один узел продукта со всеми именами и partnums в нем. Я пробовал использовать для каждого цикла, я пробовал это решение how to get a transformed xml file with all child tags of every occurance of parent tag under only one parent tag с очень близкими результатами, но единственная проблема заключается в том, что я получаю все теги завершения продукта, вложенные в тег продукта.Получить дочерний узел для каждого родительского узла
Вот мой текущий XML:
<CATALOG>
<PRODUCT NAME="18 Volt Cordless DRILL" PARTNUM="12">
<SPECIFICATIONS><WEIGHT>8 oz. </WEIGHT><POWER>18 Volt</POWER></SPECIFICATIONS>
<OPTIONS FINISH="Polished"/>
<PRICE> <MSRP>139.99</MSRP>
<WHOLESALE>89.99</WHOLESALE><SHIPPING>10.00</SHIPPING></PRICE>
<NOTES>On sale for $99.99 for one week only.</NOTES>
</PRODUCT>
<PRODUCT NAME="Variable Speed Drill Press" PARTNUM="76" CATEGORY="Shop-Professional">
<SPECIFICATIONS><WEIGHT>100 lbs.</WEIGHT><POWER>120 Volt</POWER></SPECIFICATIONS>
<OPTIONS FINISH="Metal"/>
<PRICE> <MSRP>299.99</MSRP>
<WHOLESALE>199.99</WHOLESALE><SHIPPING>50.00</SHIPPING></PRICE>
<NOTES>Ground shipping only.</NOTES>
</PRODUCT>
<PRODUCT NAME="Gas powered generator" PARTNUM="54" CATEGORY="Shop-Professional">
<SPECIFICATIONS><WEIGHT>75 lbs.</WEIGHT><POWER>120 Volt</POWER></SPECIFICATIONS>
<OPTIONS FINISH="Metal" ADAPTER="Optional" CASE="NotApplicable"/>
<PRICE> <MSRP>1122.99</MSRP><WHOLESALE>654.99</WHOLESALE><SHIPPING>41.00</SHIPPING></PRICE>
<NOTES>The most powerfull generator made.</NOTES>
</PRODUCT>
<PRODUCT NAME="Hammer" PARTNUM="1" CATEGORY="HandTool">
<SPECIFICATIONS><WEIGHT>5 lbs.</WEIGHT></SPECIFICATIONS>
<PRICE> <MSRP>9.99</MSRP><WHOLESALE>7.99</WHOLESALE><SHIPPING>2.00</SHIPPING></PRICE>
</PRODUCT>
<PRODUCT NAME="Screwdriver" PARTNUM="2" CATEGORY="HandTool">
<SPECIFICATIONS><WEIGHT>1 lbs.</WEIGHT></SPECIFICATIONS>
<PRICE> <MSRP>11.99</MSRP><WHOLESALE>9.99</WHOLESALE><SHIPPING>3.00</SHIPPING></PRICE>
</PRODUCT>
<PRODUCT NAME="Saw" PARTNUM="3" >
<SPECIFICATIONS><WEIGHT>3 lbs.</WEIGHT></SPECIFICATIONS>
<OPTIONS FINISH="Metal" ADAPTER="NotApplicable" CASE="NotApplicable"/>
<PRICE> <MSRP>5.99</MSRP><WHOLESALE>7.99</WHOLESALE><SHIPPING>2.50</SHIPPING></PRICE>
</PRODUCT>
<PRODUCT NAME="Black and Decker Variable Drill" PARTNUM="2456" CATEGORY="HandTool">
<SPECIFICATIONS><WEIGHT>2 lbs." </WEIGHT><POWER>1/3HP</POWER></SPECIFICATIONS>
<OPTIONS FINISH="Metal" ADAPTER="Included" CASE="HardShell"/>
<PRICE> <MSRP>35.99</MSRP>
<WHOLESALE>24.95</WHOLESALE><SHIPPING>4.95</SHIPPING></PRICE>
<NOTES>This item is on clearance.</NOTES>
</PRODUCT>
<PRODUCT NAME="Black and Decker Rotary Tablesaw" PARTNUM="2364" CATEGORY="Table">
<SPECIFICATIONS><WEIGHT>25 lbs.</WEIGHT><POWER>2/3HP</POWER></SPECIFICATIONS>
<OPTIONS FINISH="Metal" ADAPTER="NotApplicable" CASE="NotApplicable"/>
<PRICE> <MSRP>45.95</MSRP><WHOLESALE>34.95</WHOLESALE><SHIPPING>4.95</SHIPPING></PRICE>
<NOTES>See Manufacturer's warning label.</NOTES>
</PRODUCT>
<PRODUCT NAME="Black and Decker Workman's Bench" PARTNUM="3446" CATEGORY="Shop-Professional">
<SPECIFICATIONS><WEIGHT>50 lbs.</WEIGHT></SPECIFICATIONS>
<OPTIONS FINISH="Matte" ADAPTER="NotApplicable" CASE="NotApplicable"/>
<PRICE> <MSRP>72.45</MSRP><WHOLESALE>56.99</WHOLESALE><SHIPPING>10.95</SHIPPING></PRICE>
<NOTES />
</PRODUCT>
</CATALOG>
Вот результат я получаю
<?xml version="1.0" encoding="utf-8"?>
<CATALOG>
<PRODUCT>
<PRODUCT/>
<NAME>18 Volt Cordless DRILL</NAME>
<PARTNUM>12</PARTNUM>
<PRODUCT/>
<NAME>Variable Speed Drill Press</NAME>
<PARTNUM>76</PARTNUM>
<PRODUCT/>
<NAME>Gas powered generator</NAME>
<PARTNUM>54</PARTNUM>
<PRODUCT/>
<NAME>Hammer</NAME>
<PARTNUM>1</PARTNUM>
<PRODUCT/>
<NAME>Screwdriver</NAME>
<PARTNUM>2</PARTNUM>
<PRODUCT/>
<NAME>Saw</NAME>
<PARTNUM>3</PARTNUM>
<PRODUCT/>
<NAME>Black and Decker Variable Drill</NAME>
<PARTNUM>2456</PARTNUM>
<PRODUCT/>
<NAME>Black and Decker Rotary Tablesaw</NAME>
<PARTNUM>2364</PARTNUM>
<PRODUCT/>
<NAME>Black and Decker Workman's Bench</NAME>
<PARTNUM>3446</PARTNUM>
<PRODUCT/>
</PRODUCT>
</CATALOG>
Вот вывод я пытаюсь получить
<CATALOG>
<PRODUCT>
<NAME>18 Volt Cordless DRILL</NAME>
<PARTNUM>12</PARTNUM>
<PRODUCT/>
<PRODUCT>
<NAME>Variable Speed Drill Press</NAME>
<PARTNUM>76</PARTNUM>
<PRODUCT/>
<PRODUCT>
<NAME>Gas powered generator</NAME>
<PARTNUM>54</PARTNUM>
<PRODUCT/>
<!---And so on, you get the idea-->
</CATALOG>
Вот xslt
<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
version="1.0">
<xsl:output method="xml" indent="yes"/>
<xsl:template match="/">
<xsl:element name="CATALOG">
<xsl:apply-templates select="/CATALOG"/>
</xsl:element>
</xsl:template>
<xsl:template match="node()|@*">
<xsl:element name="PRODUCT" >
<xsl:apply-templates select="node()|@*"/>
</xsl:element>
</xsl:template>
<xsl:template match="PRODUCT">
<xsl:element name="NAME">
<xsl:value-of select="@NAME"/>
</xsl:element>
<xsl:element name="PARTNUM">
<xsl:value-of select="@PARTNUM"/>
</xsl:element>
</xsl:template>
</xsl:stylesheet>
Что XSLT вы пробовали? Можете ли вы вставить свой код? –
Извините, забыл xslt, плохо опубликуйте его. – DrinkJavaCodeJava
Я отправил xslt – DrinkJavaCodeJava