【发布时间】:2018-03-16 10:20:58
【问题描述】:
我设法通过水平拆分每条线来映射它们。
当(Q1, Q2) 和 (Q3, Q4) 没有在各自的封闭标签下聚集在一起时,就会出现问题。此外,我们需要处理一组重复的行。就像在下面的示例中一样,我再次重复了前两行。
Q12222222222
Q21111111111
Q13333333333
Q24444444444
Q35555555555
Q46666666666
目标 XSD 文件如下:
<xs:schema>
<xs:element name="Statement">
<xs:complexType>
<xs:sequence>
<xs:element name="StatementDetails" type="StatementDetailsT" maxOccurs="unbounded"/>
<xs:element name="FinalStatement" type="FinalStatementT" minOccurs="0" maxOccurs="1"/>
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:complexType name="StatementDetailsT">
<xs:sequence>
<xs:element name="Q1" type="Q1_T" maxOccurs="1"/>
<xs:element name="Q2" type="Q2_T" maxOccurs="1"/>
</xs:sequence>
</xs:complexType>
<xs:complexType name="FinalStatementT">
<xs:sequence>
<xs:element name="Q3" type="Q3_T" maxOccurs="1"/>
<xs:element name="Q4" type="Q4_T" maxOccurs="1"/>
</xs:sequence>
</xs:complexType>
<xs:complexType name="Q1_T">
<xs:sequence>
<xs:element type="st:string2" name="cIdentifier" fixed="Q1" />
<xs:element type="st:string10" name="sNumber" />
</xs:sequence>
</xs:complexType>
<xs:complexType name="Q2_T">
<xs:sequence>
<xs:element type="st:string2" name="cIdentifier" fixed="Q2" />
<xs:element type="st:string11" name="antiDumpingDuty" minOccurs="0" maxOccurs="1"/>
</xs:sequence>
</xs:complexType>
<xs:complexType name="Q3_T">
<xs:sequence>
<xs:element type="st:string2" name="cIdentifier" fixed="Q3" />
<xs:element type="st:string10" name="sNumber" />
</xs:sequence>
</xs:complexType>
<xs:complexType name="Q4_T">
<xs:sequence>
<xs:element type="st:string2" name="cIdentifier" fixed="Q4" />
<xs:element type="st:string11" name="antiDumpingDuty" minOccurs="0" maxOccurs="1"/>
</xs:sequence>
</xs:complexType>
</xs:schema>
预期的 XML 应如下所示:
<Statement>
<StatementDetails>
<Q1>
<cIdentifier>Q1</cIdentifier>
<sNumber>2222222222</sNumber>
</Q1>
<Q2>
<cIdentifier>Q2</cIdentifier>
<antiDumpingDuty>1111111111</antiDumpingDuty>
</Q2>
</StatementDetails>
<StatementDetails>
<Q1>
<cIdentifier>Q1</cIdentifier>
<sNumber>3333333333</sNumber>
</Q1>
<Q2>
<cIdentifier>Q2</cIdentifier>
<antiDumpingDuty>4444444444</antiDumpingDuty>
</Q2>
</StatementDetails>
<FinalStatement>
<Q3>
<cIdentifier>Q3</cIdentifier>
<sNumber>5555555555</sNumber>
</Q3>
<Q4>
<cIdentifier>Q4</cIdentifier>
<antiDumpingDuty>6666666666</antiDumpingDuty>
</Q4>
</FinalStatement>
</Statement>
我已按以下顺序应用拆分:
模式重复拆分:分隔(行开头), 正则表达式:是的,模式:
^Q[13]这会将数据分成 3 段,每段两行。Switch 包含正则表达式:
^Q[12]、^Q[34]。然后将 step-2 的每个输出应用水平重复拆分, 这将每个部分分成单行。 然后根据列长度应用多次拆分。
附上拆分和映射图供参考。
实际的 XML 文件由映射产生如下:
<Statement>
<StatementDetails>
<Q1>
<cIdentifier>Q1</cIdentifier>
<sNumber>2222222222</sNumber>
</Q1>
</StatementDetails>
<StatementDetails>
<Q2>
<cIdentifier>Q2</cIdentifier>
<antiDumpingDuty>1111111111</antiDumpingDuty>
</Q2>
</StatementDetails>
<StatementDetails>
<Q1>
<cIdentifier>Q1</cIdentifier>
<sNumber>3333333333</sNumber>
</Q1>
</StatementDetails>
<StatementDetails>
<Q2>
<cIdentifier>Q2</cIdentifier>
<antiDumpingDuty>4444444444</antiDumpingDuty>
</Q2>
</StatementDetails>
<FinalStatement>
<Q3>
<cIdentifier>Q3</cIdentifier>
<sNumber>5555555555</sNumber>
</Q3>
</FinalStatement>
<FinalStatement>
<Q4>
<cIdentifier>Q4</cIdentifier>
<antiDumpingDuty>6666666666</antiDumpingDuty>
</Q4>
</FinalStatement>
</Statement>
请有人建议结构或映射出了什么问题?提前致谢。
【问题讨论】: