XML XSLT преобразование - PullRequest
0 голосов
/ 20 мая 2019

Я новичок в XML, XSLT.У меня есть входной XML-файл и целевой XML-файл.Мне нужно написать код XSLT, который генерирует целевой XML.Может кто-нибудь, пожалуйста, помогите мне понять это.Корневая накладная Element сопоставляется с Document, а остальные дочерние и дочерние элементы сопоставляются с para.Я изо всех сил пытаюсь написать код преобразования.Первый - это ввод, а второй - целевой xml-код: Может кто-нибудь помочь мне с преобразованием.

  <?xml version="1.0" encoding="UTF-8"?>
  <?xml-stylesheet type="text/xsl" href="transformation.xsl"?>
   <bill bill-stage="Enrolled" bill-type="abc" dms- 
    id="1234" key="1" public- 
     private="public" stage-count="1">
  <main>
  <longTitle>
  <docTitle style="-uslm-lc:I123" class="centered 
   fontsize18">Hello</docTitle>
   <officialTitle style="-uslm-lc:I1234" class="centered fontsize8">To 
    name the Department of Electrical Engineering.<br 
    verticalSpace="08pt"/></officialTitle>
   </longTitle>
   <enactingFormula style="-uslm-lc:I2334">  This related to Student 
      Homework Submission on time</enactingFormula>
   <section style="-uslm-lc:I235"><num value="1">SECTION 1. </num> 
  <heading>Report Submission</heading>
  <content style="-uslm-lc:I1236">  The Department of Electrical 
  Engineering has come to a conclusion that students who do not submit 
  assignement on time will not be considered to sit in the finals
  </content>
  </section>
 </main>
  <signatures>
   <signature><role style="-uslm-lc:I114">Associate Department 
     Advisor</role></signature>
   <signature><role style="-uslm-lc:I114">Electrical Engineering Dept. 
    </role></signature>
  </signatures>
 </bill>

target XML

   <?xml version="1.0" encoding="UTF-8"?>
    <document>
      <para format="6655" loc="05">Hello</para>
        <para format="66554" loc="11">To name the Department  of 
           Electrical Engineering. </para>
         <para format="6501" loc="20">This related to Student Homework 
           Submission on time</para>
           <para format="6501" loc="46"><?xpp fv;1?>SECTION 1. <?xpp 
               fv;4?>Report Submission <?xpp rs-font?>The Department of 
                 Electrical Engineering has come to a conclusion that 
                     students who do not submit assignement on time will 
                       not be considered to sit in the finals</para>
            <para format="6501" loc="14">Associate Department 
             Advisor</para>
            <para format="6501" loc="14">Electrical Engineering Dept. 
         </para>
      </document>

Я попытался написать следующий код:

 <?xml version = "1.0" encoding="UTF-8"?>

 <xsl:stylesheet version="1.0" 
   xmlns:xsl="http://www.w3.org/1999/XSL/Transform"> 

<xsl:output method="text" indent="yes">
    <xsl:template  match="/">
        <xsl:element name ="document">
            <xsl:apply-templates select ="bill"/>
        </xsl:element>
    </xsl:template>

    <xsl:template match="document">
        <xsl:element name = "bill">
            <!--</xsl:copy-of select "*"/>-->
            <xsl:for-each select="bill/main/longTitle">
                <xsl:apply-template select="para">
                    <xsl:value-of select="docTitle"/>
                    <xsl:value-of select="officialTitle"/>
                </xsl:element>   
            </xsl:for-each>
            <xsl:for-each select="bill/main/">
                <xsl:value-of select="enactingFormula"/>

            </xsl:for-each>
            <xsl:for-each select="section">
            <xsl:for-each select="bill/main/section">
                <xsl:value-of select="num">
                <xsl:value-of select="heading">
                <xsl:value-of select="content">

            </xsl:for-each>
        </xsl:element>
    </xsl:template>

</xsl:output>

1 Ответ

0 голосов
/ 24 мая 2019
**<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:template match="/">
  <xsl:element name="document">
    <xsl:apply-templates select="bill"/>
  </xsl:element>
</xsl:template>
<xsl:template match="//docTitle">
    <para format="6655" loc="05">
    <xsl:apply-templates/>
  </para>
</xsl:template>
<xsl:template match="//officialTitle">
  <para format="66554" loc="11">
    <xsl:apply-templates/>
  </para>
</xsl:template>
<xsl:template match="//enactingFormula">
  <para format="6501" loc="20">
    <xsl:apply-templates/>
  </para>
</xsl:template>
<xsl:template match="//section">
  <para format="6501" loc="46">
    <xsl:apply-templates/>
  </para>
</xsl:template>
  <xsl:template match="num[parent::section]">
    <xsl:text>&lt;?xpp fv;1?&gt;</xsl:text>
    <xsl:apply-templates/>
</xsl:template>
<xsl:template match="heading[parent::section]">
    <xsl:text>&lt;?xpp fv;4?&gt;</xsl:text>
    <xsl:apply-templates/>
</xsl:template>
<xsl:template match="content[parent::section]">
    <xsl:text> &lt;?xpp rs-font?&gt;</xsl:text>
    <xsl:apply-templates/>
</xsl:template>
<xsl:template match="signatures">
  <xsl:apply-templates/>
</xsl:template>
  <xsl:template match="signature">
    <para format="6501" loc="14">
      <xsl:apply-templates/>
    </para>
  </xsl:template>
</xsl:stylesheet>**
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...