【问题标题】:How to place all output XML if condition of XSLT code in single line如果 XSLT 代码的条件在单行中,如何放置所有输出 XML
【发布时间】:2015-07-02 08:31:49
【问题描述】:

我想将所有输出 XML(带有 xsl if 条件)保留在一行中。我正在使用以下 XML 和 XSLT。 请帮助 XSLT 代码如何将所有输出 xml 放在一行中。

输入 XML

    <root>
    <row>
           <POC_ID>1</POC_ID>
           <POC_ACT_NO>212568898</POC_ACT_NO>                                                
           <POC_DBT_NO>2000</POC_DBT_NO>
           <POC_COURT_NAME>Detroit Municipal</POC_COURT_NAME>        
           <POC_PLAINTIFF>JohnJackson</POC_PLAINTIFF>
           <POC_DEFENDANT>Bob Golic</POC_DEFENDANT>
           <POC_DEFENDANT02>Teddy Newman</POC_DEFENDANT02>        
           <POC_DEFENDANT03></POC_DEFENDANT03>
           <POC_DEFENDANT04></POC_DEFENDANT04>
           <POC_CASE_NO>23-231501</POC_CASE_NO>         
           <POC_INT_RATE>3.5</POC_INT_RATE>
           <POC_INT_FRM_CMPLT>35.25</POC_INT_FRM_CMPLT>        
           <POC_INT_FRM_DOJ>0.00</POC_INT_FRM_DOJ>
           <POC_DWN_PMT>525.00</POC_DWN_PMT>
           <POC_PMT_DUE_DATE>7/19/2015</POC_PMT_DUE_DATE>        
           <POC_PERIODIC_AMT>75.00</POC_PERIODIC_AMT>
           <POC_PERIODIC_PMT_DUE_DATE>25</POC_PERIODIC_PMT_DUE_DATE>
           <POC_PMT_FREQ>BWK</POC_PMT_FREQ>
           <POC_DWNPMT>Y</POC_DWNPMT>
           <POC_INTCMP_FLG>Y</POC_INTCMP_FLG>
           <POC_INTDOJ_FLG>N</POC_INTDOJ_FLG>
           <POC_LANG_REMOVED>N</POC_LANG_REMOVED>
           <DAY_OF_THE_WEEK>4</DAY_OF_THE_WEEK>
           <NUMBER_OF_PAYMENTS>23</NUMBER_OF_PAYMENTS>
           <PAYMENT_REVIEW_DATE>08/02/2014</PAYMENT_REVIEW_DATE>
    </row>
  </root>

请帮助 XSLT 代码如何将所有输出 xml 放在一行中。

XSL 代码:

 <xsl:template match="root">
        <root>
          <xsl:for-each select="row">
            <xsl:variable name="Pmt_freq" >
              <xsl:value-of select="POC_PMT_FREQ"/>
            </xsl:variable>
            <xsl:variable name="downPayment" >
              <xsl:value-of select="POC_DWNPMT"/>
            </xsl:variable>
            <xsl:variable name="cmpFlag" >
              <xsl:value-of select="POC_INTCMP_FLG"/>
            </xsl:variable>
            <xsl:variable name="dojFlag" >
              <xsl:value-of select="POC_INTDOJ_FLG"/>
            </xsl:variable>
            <xsl:variable name="pocLang" >
              <xsl:value-of select="POC_LANG_REMOVED"/>
            </xsl:variable>

            <row>

              <DefTitle>
                <xsl:value-of select="POC_DEFENDANT"/>
              </DefTitle>
              <TotalJudgement>
                <xsl:value-of select="POC_DWN_PMT +(POC_INT_FRM_CMPLT +  POC_INT_FRM_DOJ *  POC_INT_RATE)" />
              </TotalJudgement>

              <MICJEINT>
                <xsl:if  test="$Pmt_freq='MWD' and $downPayment='N'">
                  shall pay this Judgment  with the first payment of <xsl:value-of select="POC_PERIODIC_AMT"/> due on or before <xsl:value-of select="POC_PERIODIC_PMT_DUE_DATE"/>, and subsequent payments of <xsl:value-of select="POC_PERIODIC_AMT"/> on or before the <xsl:value-of select="DAY_OF_THE_WEEK"/>  of each month thereafter until this Judgment is paid in full.
                </xsl:if>
                <xsl:if  test="$Pmt_freq='BIW' and $downPayment='Y'">
                  shall pay this Judgment  with the first payment of <xsl:value-of select="POC_DWN_PMT"/> due on or before <xsl:value-of select="POC_PMT_DUE_DATE"/>  and subsequent payments of <xsl:value-of select="POC_PERIODIC_AMT"/> on or before the <xsl:value-of select="POC_PERIODIC_PMT_DUE_DATE"/>  of every other week thereafter until this Judgment is paid in full
                </xsl:if>
                <xsl:if  test="$Pmt_freq='BIW' and $downPayment='N'">
                  shall pay this Judgment  with the first payment of <xsl:value-of select="POC_PERIODIC_AMT"/>  due on or before <xsl:value-of select="POC_PMT_DUE_DATE"/> and subsequent payments of <xsl:value-of select="POC_PERIODIC_AMT"/>  on or before the  <xsl:value-of select="POC_PERIODIC_PMT_DUE_DATE"/>  of every other week thereafter until this Judgment is paid in full
                </xsl:if>
                <xsl:if  test="$Pmt_freq='BMO' and $downPayment='Y'">
                  shall pay this Judgment  with the first payment of <xsl:value-of select="POC_DWN_PMT"/> due on or before <xsl:value-of select="POC_PMT_DUE_DATE"/>  and subsequent payments of <xsl:value-of select="POC_PERIODIC_AMT"/> on or before the <xsl:value-of select="POC_PERIODIC_PMT_DUE_DATE"/>  of every month thereafter until this Judgment is paid in full
                </xsl:if>
                <xsl:if  test="$Pmt_freq='BMO' and $downPayment='N'">
                  shall pay this Judgment  with the first payment of <xsl:value-of select="POC_PERIODIC_AMT"/> due on or before <xsl:value-of select="POC_PERIODIC_PMT_DUE_DATE"/>  and subsequent payments of <xsl:value-of select="POC_PERIODIC_AMT"/>  on or before the <xsl:value-of select="POC_PERIODIC_PMT_DUE_DATE"/> of each month thereafter until this Judgment is paid in full
                </xsl:if> 
            <xsl:if  test="$Pmt_freq='BWK' and $downPayment='Y'">
              shall pay this Judgment  with the first payment of <xsl:value-of select="POC_DWN_PMT"/> due on or before <xsl:value-of select="POC_PMT_DUE_DATE"/>  and subsequent payments of <xsl:value-of select="POC_PERIODIC_AMT"/>  on or before the <xsl:value-of select="POC_PERIODIC_PMT_DUE_DATE"/> of each week thereafter until this Judgment is paid in full
            </xsl:if>
            <xsl:if  test="$Pmt_freq='BWK' and $downPayment='N'">
              shall pay this Judgment  with the first payment of <xsl:value-of select="POC_PERIODIC_AMT"/>  due on or before <xsl:value-of select="POC_PERIODIC_PMT_DUE_DATE"/>  and subsequent payments of <xsl:value-of select="POC_PERIODIC_AMT"/> on or before the <xsl:value-of select="POC_PERIODIC_PMT_DUE_DATE"/> of each week thereafter until this Judgment is paid in full
            </xsl:if>


            <xsl:if  test="$Pmt_freq='MON' and $downPayment='Y'">
              shall pay this Judgment  with the first payment of <xsl:value-of select="POC_DWN_PMT"/> due on or before <xsl:value-of select="POC_PMT_DUE_DATE"/>  and subsequent payments of <xsl:value-of select="POC_PERIODIC_AMT"/>  on or before the <xsl:value-of select="POC_PERIODIC_PMT_DUE_DATE"/> of each month thereafter until this Judgment is paid in full
            </xsl:if>
            <xsl:if  test="$Pmt_freq='MON' and $downPayment='N'">
              shall pay this Judgment  with the first payment of <xsl:value-of select="POC_PERIODIC_AMT"/> due on or before <xsl:value-of select="POC_PMT_DUE_DATE"/> and subsequent payments of <xsl:value-of select="POC_PERIODIC_AMT"/> on or before the <xsl:value-of select="POC_PERIODIC_PMT_DUE_DATE"/> of each month thereafter until this Judgment is paid in full
            </xsl:if>
            <xsl:if  test="$Pmt_freq='BIF' and $downPayment='Y'">
              shall pay the sum of <xsl:value-of select="POC_DWN_PMT"/> on or before<xsl:value-of select="POC_PMT_DUE_DATE"/>
            </xsl:if>
            <xsl:if  test="$Pmt_freq='BIF' and $downPayment='N'">
              shall pay the sum of <xsl:value-of select="POC_DWN_PMT"/> on or before<xsl:value-of select="POC_PMT_DUE_DATE"/>
            </xsl:if>
            <xsl:if  test="$Pmt_freq='MWD' and $downPayment='Y'">
              shall pay this Judgment  with the first payment of<xsl:value-of select="POC_DWN_PMT"/> due on or before <xsl:value-of select="POC_PMT_DUE_DATE"/>, and subsequent payments of <xsl:value-of select="POC_PERIODIC_AMT"/> on or before the 4th day of each month thereafter until this Judgment is paid in full
            </xsl:if>
            <xsl:if  test="$Pmt_freq='SMU' and $downPayment='N'">
              shall pay this Judgment  with the first payment of <xsl:value-of select="POC_PERIODIC_AMT"/> due on or before <xsl:value-of select="POC_PERIODIC_AMT"/>, and subsequent payments of <xsl:value-of select="POC_PERIODIC_AMT"/> on or before the  <xsl:value-of select="POC_PERIODIC_PMT_DUE_DATE"/> of each month thereafter until this Judgment is paid in full;
            </xsl:if>
            <xsl:if  test="$Pmt_freq='SMU' and $downPayment='Y'">
              shall pay this Judgment  with the first payment of <xsl:value-of select="POC_DWN_PMT"/> due on or before <xsl:value-of select="POC_PMT_DUE_DATE"/>, and subsequent payments of <xsl:value-of select="POC_PERIODIC_AMT"/>  on or before the <xsl:value-of select="POC_PMT_DUE_DATE"/>  and <xsl:value-of select="POC_PERIODIC_PMT_DUE_DATE"/>  of each month thereafter until this Judgment is paid in full;
            </xsl:if>
            <xsl:if  test="$Pmt_freq='WEK' and $downPayment='Y'">
              shall pay this Judgment  with the first payment of <xsl:value-of select="POC_DWN_PMT"/> due on or before <xsl:value-of select="POC_PMT_DUE_DATE"/>, and subsequent payments of <xsl:value-of select="POC_PERIODIC_AMT"/> on or before the <xsl:value-of select="POC_PERIODIC_PMT_DUE_DATE"/> of each week thereafter until this Judgment is paid in full
            </xsl:if>
            <xsl:if  test="$Pmt_freq='WEK' and $downPayment='N'">
              shall pay this Judgment  with the first payment of <xsl:value-of select="POC_PERIODIC_AMT"/> due on or before <xsl:value-of select="POC_PERIODIC_PMT_DUE_DATE"/>, and subsequent payments of <xsl:value-of select="POC_PERIODIC_AMT"/> on or before the <xsl:value-of select="POC_PERIODIC_PMT_DUE_DATE"/> of each week thereafter until this Judgment is paid in full
            </xsl:if>
            <xsl:if  test="$Pmt_freq='PAR' and $downPayment='Y'">
              shall pay this Judgment  with the first payment of <xsl:value-of select="POC_DWN_PMT"/>  due on or before <xsl:value-of select="POC_PMT_DUE_DATE"/>, and subsequent payments of <xsl:value-of select="POC_PERIODIC_AMT"/> on or before the <xsl:value-of select="POC_PERIODIC_PMT_DUE_DATE"/> of each month for <xsl:value-of select="NUMBER_OF_PAYMENTS"/>. On <xsl:value-of select="PAYMENT_REVIEW_DATE"/> Plaintiff will review for increase of said payments
            </xsl:if>
            <xsl:if  test="$Pmt_freq='PAR' and $downPayment='N'">
              shall pay this Judgment  with the first payment of<xsl:value-of select="POC_PERIODIC_AMT"/> due on or before <xsl:value-of select="POC_PERIODIC_PMT_DUE_DATE"/>, and subsequent payments of <xsl:value-of select="POC_PERIODIC_AMT"/> on or before the <xsl:value-of select="POC_PERIODIC_PMT_DUE_DATE"/> of each month for <xsl:value-of select="NUMBER_OF_PAYMENTS"/>>. On <xsl:value-of select="PAYMENT_REVIEW_DATE"/> Plaintiff will review for increase of said payments
            </xsl:if>
            <xsl:if  test="Pmt_freq='QTR' and $downPayment='Y'">
              shall pay this Judgment  with the first payment of <xsl:value-of select="POC_DWN_PMT"/> due on or before <xsl:value-of select="POC_PERIODIC_PMT_DUE_DATE"/>, and subsequent payments of <xsl:value-of select="POC_PERIODIC_AMT"/> on or before the <xsl:value-of select="POC_PERIODIC_PMT_DUE_DATE"/> of every three (3) months there after until this judgment is paid in full
            </xsl:if>
            <xsl:if  test="$Pmt_freq='QTR' and $downPayment='N'">
              shall pay this Judgment  with the first payment of <xsl:value-of select="POC_PERIODIC_AMT"/> due on or before <xsl:value-of select="POC_PERIODIC_PMT_DUE_DATE"/>, and subsequent payments of <xsl:value-of select="POC_PERIODIC_AMT"/> on or before the <xsl:value-of select="POC_PERIODIC_PMT_DUE_DATE"/> of every three (3) months there after until this judgment is paid in full
            </xsl:if>
            <xsl:if  test="$Pmt_freq='SET' and $downPayment='Y'">
              Shall pay the sum of <xsl:value-of select="POC_PERIODIC_AMT"/> on of before <xsl:value-of select="POC_PERIODIC_PMT_DUE_DATE"/>
            </xsl:if>
            <xsl:if  test="$Pmt_freq='SET' and $downPayment='N'">
              Shall pay the sum of <xsl:value-of select="POC_PERIODIC_AMT"/> on of before <xsl:value-of select="POC_PERIODIC_PMT_DUE_DATE"/>
            </xsl:if>
            <xsl:if  test="$Pmt_freq='SMO' and $downPayment='Y'">
              sshall pay this Judgment  with the first payment of <xsl:value-of select="POC_DWN_PMT"/>  due on or before <xsl:value-of select="POC_PMT_DUE_DATE"/>, and subsequent payments of <xsl:value-of select="POC_PERIODIC_AMT"/> on or before the <xsl:value-of select="POC_PMT_DUE_DATE"/> of each month On <xsl:value-of select="PAYMENT_REVIEW_DATE"/> Plaintiff will review for increase of said payments
            </xsl:if>
            <xsl:if  test="$Pmt_freq='SMO' and $downPayment='N'">
              shall pay this Judgment  with the first payment of <xsl:value-of select="POC_PERIODIC_AMT"/> due on or before <xsl:value-of select="POC_PERIODIC_PMT_DUE_DATE"/>, and subsequent payments of <xsl:value-of select="POC_PERIODIC_AMT"/> on or before the <xsl:value-of select="POC_PERIODIC_PMT_DUE_DATE"/> of each month. On <xsl:value-of select="PAYMENT_REVIEW_DATE"/> Plaintiff will review for increase of said payments
            </xsl:if>


          </MICJEINT>

          <MICJEINT01>
            <xsl:if  test="$cmpFlag='Y' and $dojFlag='N' and $pocLang='N'">
              plus interest accruing at <xsl:value-of select="POC_INT_RATE"/> % since the filing of Plaintiff’s Complaint pursuant to MCL §600.6013
            </xsl:if>
            <xsl:if  test="$cmpFlag='Y' and $dojFlag='N' and $pocLang='y'">
              plus interest accruing at <xsl:value-of select="POC_INT_RATE"/> % since the filing of Plaintiff’s Complaint pursuant to MCL §600.6013
            </xsl:if>
            <xsl:if  test="$cmpFlag='Y' and $dojFlag='y' and $pocLang='N'">
              plus interest accruing at <xsl:value-of select="POC_INT_RATE"/> % since the filing of Plaintiff’s Complaint pursuant to MCL §600.6013
            </xsl:if>
            <xsl:if  test="$cmpFlag='Y' and $dojFlag='y' and $pocLang='y'">
              plus interest accruing at <xsl:value-of select="POC_INT_RATE"/> % since the filing of Plaintiff’s Complaint pursuant to MCL §600.6013
            </xsl:if>
            <xsl:if  test="$cmpFlag='N' and $dojFlag='N' and $pocLang='N'">
              plus interest accruing at <xsl:value-of select="POC_INT_RATE"/> % since the filing of Plaintiff’s Complaint pursuant to MCL §600.6013
            </xsl:if>
            <xsl:if  test="$cmpFlag='N' and $dojFlag='N' and $pocLang='y'">
              plus interest accruing at <xsl:value-of select="POC_INT_RATE"/> % since the filing of Plaintiff’s Complaint pursuant to MCL §600.6013
            </xsl:if>
            <xsl:if  test="$cmpFlag='N' and $dojFlag='Y' and $pocLang='N'">
              plus interest accruing at <xsl:value-of select="POC_INT_RATE"/> % since the filing of Plaintiff’s Complaint pursuant to MCL §600.6013
            </xsl:if>
            <xsl:if  test="$cmpFlag='N' and $dojFlag='Y' and $pocLang='Y'">
              plus interest accruing at <xsl:value-of select="POC_INT_RATE"/> % since the filing of Plaintiff’s Complaint pursuant to MCL §600.6013
            </xsl:if>
          </MICJEINT01>
        </row>
      </xsl:for-each>
      <xsl:text>
      </xsl:text>
  </root>
  </xsl:template>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
</xsl:stylesheet>

请帮助 XSLT 代码如何将所有输出 xml 放在一行中。

【问题讨论】:

  • 不直接相关,但您使用的是这种编码模式:&lt;xsl:variable name="p"&gt;&lt;xsl:value-of select="q"/&gt;&lt;/xsl:variable&gt;,而您应该使用 &lt;xsl:variable name="p" select="q"/&gt;。您的代码不仅冗长,而且会创建不必要的结果树片段,这可能非常低效。

标签: xml xslt


【解决方案1】:

嗯,你似乎产生了 XML 输出,所以如果你真的想要单行,第一件事就是确保你有 &lt;xsl:output method="xml" indent="no"/&gt;,然后当然你需要确保你不输出任何换行符,所以你需要改代码做

            <xsl:if  test="$Pmt_freq='MWD' and $downPayment='N'">
              shall pay this Judgment  with the first payment of <xsl:value-of select="POC_PERIODIC_AMT"/> due on or before <xsl:value-of select="POC_PERIODIC_PMT_DUE_DATE"/>, and subsequent payments of <xsl:value-of select="POC_PERIODIC_AMT"/> on or before the <xsl:value-of select="DAY_OF_THE_WEEK"/>  of each month thereafter until this Judgment is paid in full.
            </xsl:if>

要做的事

            <xsl:if  test="$Pmt_freq='MWD' and $downPayment='N'">shall pay this Judgment  with the first payment of <xsl:value-of select="POC_PERIODIC_AMT"/> due on or before <xsl:value-of select="POC_PERIODIC_PMT_DUE_DATE"/>, and subsequent payments of <xsl:value-of select="POC_PERIODIC_AMT"/> on or before the <xsl:value-of select="DAY_OF_THE_WEEK"/>  of each month thereafter until this Judgment is paid in full.</xsl:if>

对于您拥有的所有其他结果文本节点,依此类推。

【讨论】:

  • 是的,我现在正在这样做并且进入单行。但我正在寻找任何其他方式。
  • 好吧,如果您确保将所有不带空格的结果文本放入&lt;xsl:text&gt;...&lt;/xsl:text&gt;,您还有另一种方法。
【解决方案2】:

嗨,我终于得到了答案,如下所示:

 <xsl:if  test="$Pmt_freq='BWK' and $downPayment='Y'">
              <xsl:text>shall pay this Judgment  with the first payment of</xsl:text> 
              <xsl:value-of select="POC_DWN_PMT"/> 
              <xsl:text>due on or before</xsl:text> 
              <xsl:value-of select="POC_PMT_DUE_DATE"/>
              <xsl:text>and subsequent payments of</xsl:text> 
              <xsl:value-of select="POC_PERIODIC_AMT"/>  
              <xsl:text>on or before the </xsl:text>
              <xsl:value-of select="POC_PERIODIC_PMT_DUE_DATE"/> 
              <xsl:text> each week thereafter until this Judgment is paid in full </xsl:text>
            </xsl:if>

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-01-18
    • 2020-01-19
    • 2011-09-15
    • 2011-05-04
    • 2020-11-25
    • 2011-11-08
    相关资源
    最近更新 更多