XML 및 XSL을 처음 사용합니다. 나는 우리의 공급 업체 소프트웨어에 의해 생성 된 XML 문자열을 가져와 Excel 형식으로 변환하려고합니다. XML에는 반복 행이있을 수 있으며 각 행에는 여러 개의 연관된 하위 필드가 있습니다. 하위 필드는 항상 행에서 행까지 동일하며 순서는 같지만 XML마다 다를 수 있습니다. 행 수는 파일마다 변경됩니다.부모를 열로 표시하고 일치하는 자식을 행으로 표시하는 XSL
for-each가 여기에 있고, 중첩되어 있거나 관계형 위치를 사용하고 있다는 느낌이 들지만 쿼리하는 함수 주위에 머리를 감싸는 데 문제가 있습니다. 필자는 많은 샘플을 검토했지만 모든 솔루션은 질문에 맞춰져 있으며 원하는 출력이 내 것과 같은 곳을 찾지 못했습니다.
도움이되었거나 올바른 방향으로 조금 움직여 주시면 감사하겠습니다.
감사합니다.
샘플 XML :
<?xml version="1.0" standalone="yes" ?>
<RpcData SrcNm="SnapshotBuckets" SrcTyp="DIR" ClientID="000" LoanNo="0000000000" Borrower="" RsltCd="0">
<RepeatingFieldSet Nm="Hazard" Type="All Data" Count="3">
<Row Index="1">
<Fld Nm="Type">A</Fld>
<Fld Nm="AgentCode">TESTAP</Fld>
<Fld Nm="Agent City">ANYTOWN</Fld>
<Fld Nm="Agent Desc Line 1">APPLE</Fld>
<Fld Nm="Agent Desc Line 2">PICKERS</Fld>
<Fld Nm="Agent Desc Line 3">123 MAIN ST</Fld>
<Fld Nm="Agent Phone">(718) 555-1212</Fld>
<Fld Nm="Agent State">AL</Fld>
<Fld Nm="Agent ZIP Code">00001</Fld>
</Row>
<Row Index="2">
<Fld Nm="Type">B</Fld>
<Fld Nm="AgentCode">TESTBA</Fld>
<Fld Nm="Agent City">ANYTOWN</Fld>
<Fld Nm="Agent Desc Line 1">BANANA</Fld>
<Fld Nm="Agent Desc Line 2">BUNCHERS</Fld>
<Fld Nm="Agent Desc Line 3">456 MAIN ST</Fld>
<Fld Nm="Agent Phone">(718) 555-1213</Fld>
<Fld Nm="Agent State">AK</Fld>
<Fld Nm="Agent ZIP Code">00002</Fld>
</Row>
<Row Index="3">
<Fld Nm="Type">C</Fld>
<Fld Nm="AgentCode">TESTCH</Fld>
<Fld Nm="Agent City">ANYTOWN</Fld>
<Fld Nm="Agent Desc Line 1">CHERRY</Fld>
<Fld Nm="Agent Desc Line 2">PITTERS</Fld>
<Fld Nm="Agent Desc Line 3">789 MAIN ST</Fld>
<Fld Nm="Agent Phone">(718) 555-1214</Fld>
<Fld Nm="Agent State">CA</Fld>
<Fld Nm="Agent ZIP Code">00003</Fld>
</Row>
</RepeatingFieldSet>
</RpcData>
원하는 출력 : 지금까지
Field 1 2 3 Type A B C AgentCode TESTAP TESTBA TESTCH Agent City ANYTOWN ANYTOWN ANYTOWN Agent Desc Line 1 APPLE BANANA CHERRY Agent Desc Line 2 PICKERS BUNCHERS PITTERS Agent Desc Line 3 123 MAIN ST 456 MAIN ST 789 MAIN ST Agent Phone (718) 555-1212 (718) 555-1213 (718) 555-1214 Agent State AL AK CA Agent ZIP Code 00001 00002 00003
XSL :
<xsl:stylesheet version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
xmlns="urn:schemas-microsoft-com:office:spreadsheet"
xmlns:ss="urn:schemas-microsoft-com:office:spreadsheet"
xmlns:x="urn:schemas-microsoft-com:office:excel">
<xsl:template match="/">
<xsl:processing-instruction name="mso-application"><xsl:text>progid="Excel.Sheet"</xsl:text></xsl:processing-instruction>
<Workbook>
<Worksheet ss:Name="Sheet1">
<Table>
<Row>
<Cell>Business Name</Cell>
<xsl:for-each select="RpcData/RepeatingFieldSet/Row">
<Cell>
<xsl:value-of select="@Index"/>
</Cell>
</xsl:for-each>
</Row>
<xsl:for-each select="RpcData/RepeatingFieldSet/*/Fld">
<Row>
<Cell>
<xsl:value-of select="@Nm"/>
</Cell>
<xsl:for-each select="*">
<Cell>
<xsl:value-of select="."/>
</Cell>
</xsl:for-each>
</Row>
</xsl:for-each>
</Table>
</Worksheet>
</Workbook>
</xsl:template>
</xsl:stylesheet>
정확히 무엇인지. 정말 고맙습니다! – ImagineMBE