2015-01-09 1 views
0

XML- 파일을 Open XML (Word)로 변환하려고합니다. 안에 <br/>을 번역하는 동안. 번역의 예는 다음과 같습니다 : 내 XSLT의 아무 곳이나 삽입하지 않은 경우에도 w : Open XML 표의 탭 태그 (XML-> Open XML)

<w:tbl> 
    <w:tblPr> 
     <w:tblW w:w="0" w:type="auto"/> 
     <w:tblInd w:w="2160" w:type="dxa"/> 
     <w:tblBorders> 
      <w:top w:val="double" w:sz="4" wx:bdrwidth="30" w:space="0" w:color="auto"/> 
      <w:left w:val="double" w:sz="4" wx:bdrwidth="30" w:space="0" w:color="auto"/> 
      <w:bottom w:val="double" w:sz="4" wx:bdrwidth="30" w:space="0" w:color="auto"/> 
      <w:right w:val="double" w:sz="4" wx:bdrwidth="30" w:space="0" w:color="auto"/> 
      <w:insideH w:val="double" w:sz="4" wx:bdrwidth="30" w:space="0" w:color="auto"/> 
      <w:insideV w:val="double" w:sz="4" wx:bdrwidth="30" w:space="0" w:color="auto"/> 
     </w:tblBorders> 
     <w:tblCellMar> 
      <w:top w:w="28" w:type="dxa"/> 
      <w:bottom w:w="28" w:type="dxa"/> 
     </w:tblCellMar> 
     <w:tblLook w:val="04A0"/> 
    </w:tblPr> 
    <w:tblGrid> 
     <w:gridCol w:w="3629"/> 
     <w:gridCol w:w="3352"/> 
    </w:tblGrid> 
    <w:tr wsp:rsidR="00FC1136" wsp:rsidRPr="0078376D"> 
     <w:trPr> 
      <w:trHeight w:val="200"/> 
     </w:trPr> 
     <w:tc> 
      <w:tcPr> 
       <w:tcW w:w="4500" w:type="dxa"/> 
      </w:tcPr> 
      <w:p wsp:rsidR="00FC1136" wsp:rsidRPr="0078376D" wsp:rsidRDefault="00F35AB4"> 
       <w:pPr> 
        <w:rPr> 
         <w:rFonts w:ascii="Arial" w:h-ansi="Arial" w:cs="Arial"/> 
         <wx:font wx:val="Arial"/> 
         <w:lang w:val="EN-US"/> 
        </w:rPr> 
       </w:pPr> 
       <w:r wsp:rsidRPr="0078376D"> 
        <w:rPr> 
         <w:lang w:val="EN-US"/> 
        </w:rPr> 
        <w:br/> 
       </w:r> 
       <w:r wsp:rsidRPr="0078376D"> 
        <w:rPr> 
         <w:rFonts w:ascii="Arial" w:h-ansi="Arial" w:cs="Arial"/> 
         <wx:font wx:val="Arial"/> 
         <w:sz w:val="20"/> 
         <w:sz-cs w:val="20"/> 
         <w:lang w:val="EN-US"/> 
        </w:rPr> 
        <w:tab/> 
        <w:t>shift enter</w:t> 
       </w:r> 
      </w:p> 
     </w:tc> 
    </w:tr> 
</w:tbl> 

내가, 다음 줄에 추가 <w:tab/>를 얻을. 이 태그를 제거하려면 어떻게해야합니까?

주 : 추가 w : 탭 태그 만 테이블 내부 및 w 후 삽입 된 경우 : XSLT의

부분 BR-태그 (전체 코드는 내가이 충분히 희망, 몇 백 라인이다) :

<xsl:template match="br"><w:br/></xsl:template> 
<xsl:template match="table"> 
    <xsl:variable name="totCol"> 
     <xsl:value-of select="count(tbody/tr[1]/td)"/> 
    </xsl:variable> 
    <xsl:variable name="totRow"> 
     <xsl:value-of select="count(tbody/tr)"/> 
    </xsl:variable> 
    <xsl:variable name="height"> 
     <xsl:if test="not(contains(@style, 'height'))"> 
      <xsl:value-of select="600 div $totRow"/> 
     </xsl:if> 
     <xsl:if test="contains(@style, 'height')"> 
      <xsl:value-of select="(substring-before(substring-after(@style,'height:'),'px')) * 12 div $totRow"/> 
     </xsl:if> 
    </xsl:variable> 
    <xsl:variable name="width"> 
     <xsl:if test="not(contains(@style, 'width'))"> 
      <xsl:value-of select="9250 div $totCol"/> 
     </xsl:if> 
     <xsl:if test="contains(@style, 'width')"> 
      <xsl:value-of select="(substring-before(substring-after(@style,'width:'),'px')) * 18 div $totCol"/> 
     </xsl:if> 
    </xsl:variable> 
    <xsl:variable name="indent"> 
     <xsl:value-of select="(count(ancestor::ul)+count(ancestor::ol)) * 720"/> 
    </xsl:variable> 
    <w:tbl> 
     <w:tblPr> 
      <w:tblW w:w="0" w:type="auto"/> 
      <w:tblInd w:w="{$indent}" w:type="dxa"/> 
      <w:tblBorders> 
       <w:top w:val="double" w:sz="4" wx:bdrwidth="30" w:space="0" w:color="auto"/> 
       <w:left w:val="double" w:sz="4" wx:bdrwidth="30" w:space="0" w:color="auto"/> 
       <w:bottom w:val="double" w:sz="4" wx:bdrwidth="30" w:space="0" w:color="auto"/> 
       <w:right w:val="double" w:sz="4" wx:bdrwidth="30" w:space="0" w:color="auto"/> 
       <w:insideH w:val="double" w:sz="4" wx:bdrwidth="30" w:space="0" w:color="auto"/> 
       <w:insideV w:val="double" w:sz="4" wx:bdrwidth="30" w:space="0" w:color="auto"/> 
      </w:tblBorders> 
      <w:tblCellMar> 
       <w:top w:w="28" w:type="dxa"/> 
       <w:bottom w:w="28" w:type="dxa"/> 
      </w:tblCellMar> 
      <w:tblLook w:val="04A0"/> 
     </w:tblPr> 
     <w:tblGrid> 
      <xsl:for-each select="(tbody/tr)"> 
       <w:gridCol w:w="{$width}"/> 
      </xsl:for-each> 
     </w:tblGrid> 
     <xsl:for-each select="(tbody/tr)"> 
      <w:tr> 
       <w:trPr> 
        <w:trHeight w:val="{$height}"/> 
       </w:trPr> 
       <xsl:for-each select="(td)"> 
        <w:tc> 
         <w:tcPr> 
          <w:tcW w:w="{$width}" w:type="dxa"/> 
         </w:tcPr> 
         <xsl:if test="count(text())>0"><w:p><xsl:apply-templates select="text()" /></w:p></xsl:if> 
         <xsl:apply-templates select="table" /> 
        </w:tc> 
       </xsl:for-each> 
      </w:tr> 
     </xsl:for-each> 
    </w:tbl> 
    <xsl:if test="count(following-sibling::p|ol|ul)=0"><w:p/></xsl:if> 
</xsl:template> 
<xsl:template match="text()[normalize-space()]"> 
<!-- When text() does not has any HTML-Tags --> 
<xsl:if test="name(..) = 'field'"> 
    <w:p> 
     <w:pPr> 
      <w:rFonts w:ascii="Arial" w:h-ansi="Arial" w:cs="Arial" /> 
      <wx:font wx:val="Arial" /> 
      <w:sz w:val="20" /> 
      <w:sz-cs w:val="20" /> 
     </w:pPr> 
     <w:r> 
      <w:rPr> 
       <!--w:spacing w:before="300" w:after="60" /--> 
       <w:rFonts w:ascii="Arial" w:h-ansi="Arial" w:cs="Arial" /> 
       <wx:font wx:val="Arial" /> 
       <w:sz w:val="20" /> 
       <w:sz-cs w:val="20" /> 
      </w:rPr> 
      <w:t> 
       <xsl:copy-of select="."/> 
      </w:t> 
     </w:r> 
    </w:p> 
    </xsl:if> 
    <xsl:if test="name(..) != 'field'"> 
    <w:pPr> 
     <xsl:for-each select="ancestor-or-self::*"> 
      <xsl:call-template name="ancestorStyle"> 
       <xsl:with-param name="ancestorName"> 
        <xsl:value-of select="name()"/> 
       </xsl:with-param> 
      </xsl:call-template> 
     </xsl:for-each> 

     <xsl:call-template name="hdl-styles"> 
      <xsl:with-param name="sstyles"> 
       <xsl:for-each select="ancestor-or-self::*/@style"> 
        <xsl:value-of select="concat(.,';')"/> 
       </xsl:for-each> 
      </xsl:with-param> 
     </xsl:call-template> 
    </w:pPr> 
    <w:r> 
     <w:rPr> 
      <xsl:for-each select="ancestor-or-self::*"> 
       <xsl:call-template name="ancestorStyle"> 
        <xsl:with-param name="ancestorName"> 
         <xsl:value-of select="name()"/> 
        </xsl:with-param> 
       </xsl:call-template> 
      </xsl:for-each> 
      <xsl:call-template name="hdl-styles"> 
       <xsl:with-param name="sstyles"> 
        <xsl:for-each select="ancestor-or-self::*/@style"> 
         <xsl:value-of select="concat(.,';')"/> 
        </xsl:for-each> 
       </xsl:with-param> 
      </xsl:call-template> 
     </w:rPr> 
     <w:t> 
      <xsl:copy-of select="."/> 
     </w:t> 
    </w:r> 
    </xsl:if> 
</xsl:template> 

XML 자료 :내부 태그 <br />

<table border="1" cellpadding="1" cellspacing="1" style="width: 500px"> 
    <tbody> 
     <tr> 
      <td> 
      <p>first line</p> 
      <p>line break</p> 
      <p>line break<br /> 
      shift enter<br /> 
      lvl3 table</p> 
      </td> 
      <td> </td> 
     </tr> 
     <tr> 
      <td> </td> 
      <td> </td> 
     </tr> 
     <tr> 
      <td> </td> 
      <td> </td> 
     </tr> 
    </tbody> 
</table> 
+0

번역 작업을 수행하기 위해 사용하고있는 코드와 현재 사용하고있는 코드에 대해 언급해야합니다. 또한이 예제는 지나치게 길어서, ''엘리먼트로 잘라낼 수 있습니다. – scanny

+0

정말 전체 XSLT 코드를 표시해야합니다. 그렇지 않으면, 우리는 당신을 도울 수 없습니다. 코드가 없기 때문에 투표를 종료하십시오. –

+0

나는 많은 질문이 있기 때문에 내 질문을 편집했지만, 가장 중요한 질문 만 선택합니다. 희망으로 충분할 것입니다. – sstephen

답변

0
<p>line break<br /> 
shift enter<br /> 
lvl3 table</p> 

Open XML에서 자동으로 <w:tab/>으로 변환되는 탭이 있습니다.