我想要一个在xml文件上运行的xslt文件,用逗号分隔一行中的两个prod-id和article-number。这应该只发生在哪里 产品没有商品。
我输入的xml文件是:
<?xml version="1.0" encoding="UTF-8"?>
<products>
<product>
<prod-id>P16653</prod-id>
<product-status>CREATED</product-status>
<validation-status>Valid</validation-status>
<duplication-status>Unique</duplication-status>
<content-status>New</content-status>
<article-number>233060</article-number>
<languagedata>
<language>
<languageid>en-GB</languageid>
<buying-description>FENDI L VELOUR SWEAT PANTS BEIGE</buying-description>
<customer-long-description>FENDI L VELOUR SWEAT PANTS BEIGE</customer-long-description>
</language>
</languagedata>
<items/>
<created-on>2016-08-12T11:30:00</created-on>
<created-by>Administrator</created-by>
<last-changed-on>2016-08-04T17:34:00</last-changed-on>
<last-changed-by>ap0712</last-changed-by>
<delete>false</delete>
</product>
<product>
<prod-id>P16659</prod-id>
<product-status>CREATED</product-status>
<validation-status>Valid</validation-status>
<duplication-status>Unique</duplication-status>
<content-status>New</content-status>
<article-number>345940</article-number>
<languagedata>
<language>
<languageid>en-GB</languageid>
<buying-description>FENDI L VELOUR SWEAT PANTS BEIGE</buying-description>
<customer-long-description>FENDI L VELOUR SWEAT PANTS BEIGE</customer-long-description>
</language>
</languagedata>
<items/>
<created-on>2016-08-12T11:30:00</created-on>
<created-by>Administrator</created-by>
<last-changed-on>2016-08-04T17:34:00</last-changed-on>
<last-changed-by>ap0712</last-changed-by>
<delete>false</delete>
</product>
<product>
<prod-id>P16755</prod-id>
<product-status>CREATED</product-status>
<validation-status>Valid</validation-status>
<duplication-status>Unique</duplication-status>
<content-status>New</content-status>
<article-number>11060</article-number>
<languagedata>
<language>
<languageid>en-GB</languageid>
<buying-description>FENDI L VELOUR SWEAT PANTS BEIGE</buying-description>
<customer-long-description>FENDI L VELOUR SWEAT PANTS BEIGE</customer-long-description>
</language>
</languagedata>
<items>
<item>
<item-id>i16754</item-id>
<item-status>CREATED</item-status>
<validation-status>Valid</validation-status>
<duplication-status>Unique</duplication-status>
<content-status>New</content-status>
</item>
</items>
<created-on>2016-08-12T11:30:00</created-on>
<created-by>Administrator</created-by>
<last-changed-on>2016-08-04T17:34:00</last-changed-on>
<last-changed-by>ap0712</last-changed-by>
<delete>false</delete>
</product>
<product>
<prod-id>P16633</prod-id>
<product-status>CREATED</product-status>
<validation-status>Valid</validation-status>
<duplication-status>Unique</duplication-status>
<content-status>New</content-status>
<article-number>21069</article-number>
<languagedata>
<language>
<languageid>en-GB</languageid>
<buying-description>FENDI L VELOUR SWEAT PANTS BEIGE</buying-description>
<customer-long-description>FENDI L VELOUR SWEAT PANTS BEIGE</customer-long-description>
</language>
</languagedata>
<items/>
<created-on>2016-08-12T11:30:00</created-on>
<created-by>Administrator</created-by>
<last-changed-on>2016-08-04T17:34:00</last-changed-on>
<last-changed-by>ap0712</last-changed-by>
<delete>false</delete>
</product>
<product>
<prod-id>P16785</prod-id>
<product-status>CREATED</product-status>
<validation-status>Valid</validation-status>
<duplication-status>Unique</duplication-status>
<content-status>New</content-status>
<article-number>9881061</article-number>
<languagedata>
<language>
<languageid>en-GB</languageid>
<buying-description>FENDI L VELOUR SWEAT PANTS BEIGE</buying-description>
<customer-long-description>FENDI L VELOUR SWEAT PANTS BEIGE</customer-long-description>
</language>
</languagedata>
<items>
<item>
<item-id>i16757</item-id>
<item-status>CREATED</item-status>
<validation-status>Valid</validation-status>
<duplication-status>Unique</duplication-status>
<content-status>New</content-status>
</item>
</items>
<created-on>2016-08-12T11:30:00</created-on>
<created-by>Administrator</created-by>
<last-changed-on>2016-08-04T17:34:00</last-changed-on>
<last-changed-by>ap0712</last-changed-by>
<delete>false</delete>
</product>
</products>
我希望输出为
P16653,233060
P16659,345940
我正在使用以下xslt,我从这个论坛得到并尝试修改它但它只给了我一个文章编号,而不是两个
<?xml version="1.0" encoding="UTF-8"?>
<xsl:transform xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="2.0">
<xsl:output method="text"/>
<xsl:template match="/">
<xsl:value-of select="products/product[not(items/item)]/prod-id/concat(local-name(), ' ', .)" separator=" "/>
<xsl:value-of select="products/product[not(items/item)]/article-number/concat(local-name(), ' ', .)" separator=" "/>
</xsl:template>
</xsl:transform>
答案 0 :(得分:0)
为什么你不做:
<xsl:template match="/products">
<xsl:for-each select="product[not(items/item)]">
<xsl:value-of select="prod-id"/>
<xsl:text>,</xsl:text>
<xsl:value-of select="article-number"/>
<xsl:text> </xsl:text>
</xsl:for-each>
</xsl:template>
答案 1 :(得分:0)
当我使用
时#include <QCloseEvent>
#include <QMessageBox>
void MainWindow::closeEvent(QCloseEvent *event) // show prompt when user wants to close app
{
event->ignore();
if (QMessageBox::Yes == QMessageBox::question(this, "Close Confirmation", "Exit?", QMessageBox::Yes | QMessageBox::No))
{
event->accept();
}
}
使用像Saxon 9这样的XSLT 2.0处理器
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
xmlns:xs="http://www.w3.org/2001/XMLSchema"
exclude-result-prefixes="xs"
version="2.0">
<xsl:output method="text"/>
<xsl:template match="/">
<xsl:value-of select="products/product[not(items/item)]/concat(prod-id, ',', article-number)" separator=" "/>
</xsl:template>
</xsl:stylesheet>