我需要使用XSLT转换将源XSD中的多个元素映射到目标XSD中的单个元素。让我用一个例子来解释一下: 源XSD将如下所示
<xsd:element name="SDQ">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="C1" type="xsd:string" />
<xsd:element name="C2" type="xsd:string" />
<xsd:element name="C3" type="xsd:string" />
. . and so on
</xsd:sequence>
</xsd:complexType>
</xsd:element>
目标XSD将是:
<xsd:element name="StoreNumber">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="C1" type="xsd:string" />
</xsd:sequence>
</xsd:complexType>
</xsd:element>
现在问题是我需要为源中的每个元素映射/生成XML到Target中唯一的元素。 我尝试使用“选择”,“为每个人”,但它不起作用。 如果我们有任何解决方案可以实现上述功能,请告诉我。
提前致谢。
样本输入和预期输出: 输入XML:
<Segment-SDQ> <Element-67>008</Element-67> <Element-67_1>018</Element-67_1> <Element-67_2>027</Element-67_2> <Element-67_3>044</Element-67_3> </Segment-SDQ>
必需的输出:
<StoreNumber> <c1>008</c1> <c1>018</c1> <c1>027</c1> </StoreNumber>
答案 0 :(得分:0)
给出您的示例输入:
<强> XML 强>
<Segment-SDQ>
<Element-67>008</Element-67>
<Element-67_1>018</Element-67_1>
<Element-67_2>027</Element-67_2>
<Element-67_3>044</Element-67_3>
</Segment-SDQ>
以下样式表:
XSLT 1.0
<xsl:stylesheet version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output method="xml" version="1.0" encoding="UTF-8" indent="yes"/>
<xsl:template match="/Segment-SDQ">
<StoreNumber>
<xsl:for-each select="*">
<c1>
<xsl:value-of select="." />
</c1>
</xsl:for-each>
</StoreNumber>
</xsl:template>
</xsl:stylesheet>
将返回:
<强>结果强>
<?xml version="1.0" encoding="UTF-8"?>
<StoreNumber>
<c1>008</c1>
<c1>018</c1>
<c1>027</c1>
<c1>044</c1>
</StoreNumber>
请注意,您的输入和输出都不符合您问题中显示的XSD。