2011-07-28 8 views
2

스프레드 시트를 특정 xml 레이아웃으로 내보내 PDF 형식으로 가져 오려고합니다. 나 혼자서는 꽤 멀어졌지만 끝까지 가까워 보이는 것에서 붙어있다. (프로그래밍에 능숙하지는 않지만 XML/XSLT에 대한 내 경험은이 프로젝트에만 국한 됨)스프레드 시트에서 XML 목록의 목록으로 변환

먼저 pdf에서 예제 데이터 세트를 내 보내어 내가 찾고 있어요. 그런 다음 Excel로 가져 와서 데이터에서 스프레드 시트를 가져 왔습니다. 이렇게하면 데이터를 쉽게 편집 한 다음 이론적으로 다시 내보낼 수 있지만 Excel에서는 "목록 목록"문제로 인해 가져온 XML 맵을 내보낼 수 없습니다. 이로 인해 speadsheet를 OpenOffice (기술적으로 LibreOffice)에 넣고 XSLT를 사용하여 XML 내보내기 필터를 사용해 보았습니다. 스프레드 시트의 모양에

내 데이터 ... 나는 그것이 등 수출해야

Type Name Compound Weight Material Weight 
AAA  BBB   X   5  s   2 
AAA  BBB   X   5  t   3 
AAA  BBB   Y   4  r   4 

...

<?xml version="1.0" encoding="UTF-8" ?> 
- <MCD Type="AAA" Name="BBB"> 
    - <Product Compound="X"> 
    <Amount weight="5"/> 
    - <HM Material="s"> 
     <Amount weight="2" /> 
    </HM> 
    - <HM Material="t"> 
     <Amount weight="3" /> 
    </HM> 
    </Product> 
    - <Product Compound="Y"> 
    <Amount weight="4"/> 
    - <HM Material="r"> 
     <Amount weight="4" /> 
    </HM> 
    </Product> 
    </MCD> 

하지만 내 현재의 XSL과

, 내가 더 같은 것을 얻을 ...

<?xml version="1.0" encoding="UTF-8" ?> 
- <MCD Type="AAA" Name="BBB"> 
    - <Product Compound="X"> 
    <Amount weight="5"/> 
    - <HM Material="s"> 
     <Amount weight="2" /> 
    </HM> 
    </Product> 
    </MCD> 
- <MCD Type="AAA" Name="BBB"> 
    - <Product Compound="X"> 
    - <HM Material="t"> 
     <Amount weight="3" /> 
    </HM> 
    </Product> 
    </MCD> 
- <MCD Type="AAA" Name="BBB"> 
    - <Product Compound="Y"> 
    <Amount weight="4"/> 
    - <HM Material="r"> 
     <Amount weight="4" /> 
    </HM> 
    </Product> 
    </MCD> 

내 문제는 출력에있는 스프레드 시트의 각 셀에 있습니다. 폴더 트리처럼 변경 될 때만 부모 셀을 다시 표시하려고합니다. 나는 이것이 의미가 있기를 바라고 누군가가 나를 도울 수 있기를 바란다. (내 검색에서 OpenOffice 루트가 더 가능성이있는 것처럼 보이지만, Excel 또는 Openoffice에서 작동하게 만들 수있다.) 나는 해답을 찾으려고했지만 아무것도 나의 필요에 답을 얻지 못했습니다. 미리 감사드립니다.

+1

을 쉽게 소화 뭔가 예를 줄일 수를, 바람직하게는 A, B, C, 1, 2, 3 및 더 적은 수의 열이있는 테이블을 사용하여 스크롤하지 않고도? 또한 "이 XML을 얻었습니다. 대신이 코드를 얻고 싶습니다."라고 표시하면 도움이 될 수도 있습니다. –

+1

물론 간단하게 만들 수 있습니다. 미안하지만, 나는 코딩을 너무 많이하거나 도움을 요청하지 않습니다. 바라기를 이것은 지금 좋네. 내가 도와 줄 수있는 다른 방법이 있다면 그냥 물어보십시오. – Scott

+0

오픈 오피스는 무엇입니까? 주어진 CSV 파일을 XML로 변환하기 만하고 있습니까? 또한 대상 XSLT 버전을 나타내십시오. –

답변

0

당신이 당신의 마지막 XML에서 시작하여 다음과 같은 스타일 시트를 사용하여 XSLT 2를 사용하는 경우 : 당신이 얻을 것이다

<?xml version="1.0" encoding="iso-8859-1"?> 
<xsl:stylesheet version="2.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"> 

    <xsl:template match="/"> 
    <xsl:for-each-group select="//MCD" group-by="concat(@Type,'-',@Name)"> 
     <MCD Type="{@Type}" Name="{@Name}"> 
     <xsl:for-each select="//Product[(parent::MCD/@Type = substring-before(current-grouping-key(),'-')) and (parent::MCD/@Name = substring-after(current-grouping-key(),'-'))]"> 
      <xsl:copy-of select="." /> 
     </xsl:for-each> 
     </MCD> 
    </xsl:for-each-group> 
    </xsl:template> 

</xsl:stylesheet> 

:

<?xml version="1.0" encoding="UTF-8"?><MCD Type="AAA" Name="BBB"><Product Compound="X"> 
    <Amount weight="5"/> 
    <HM Material="s"> 
     <Amount weight="2"/> 
    </HM> 
    </Product><Product Compound="X"> 
    <HM Material="t"> 
     <Amount weight="3"/> 
    </HM> 
    </Product><Product Compound="Y"> 
    <Amount weight="4"/> 
    <HM Material="r"> 
     <Amount weight="4"/> 
    </HM> 
    </Product></MCD> 
관련 문제