2016-01-26 6 views
0

У меня есть файл XSL, который использует цикл для чтения через определенный набор узлов:Чтение * * следующий узел в XML-файл (через XSL)

Теперь, я не знаю, если это выполнимо .... когда я внутри цикла, возможно ли получить доступ к «следующему» узлу в цикле для некоторого анализа?

Или, если это невозможно, можно ли выборочно читать данные определенного узла в другом XML-файле в этом цикле?

Вот некоторые из данных XML:

<?xml version="1.0" encoding="UTF-8"?> 
<?xml-stylesheet type="text/xsl" href="test.xsl"?> 
<MeetingWorkBook> 
    <Meeting> 
     <BibleReadingM StudyPoint="1" StudyPointDescription="Accurate Reading">Name 1</BibleReadingM> 
    </Meeting> 
    <Meeting> 
     <BibleReadingM StudyPoint="2" StudyPointDescription="Accurate Reading">Name 2</BibleReadingM> 
     <BibleReading1 StudyPoint="3" StudyPointDescription="Accurate Reading">Name 3</BibleReading1> 
     <StudentTalk1M StudyPoint="4" StudyPointDescription="Accurate Reading">Name 4</StudentTalk1M> 
     <StudentTalk1MA>Name 5</StudentTalk1MA> 
     <StudentTalk2M StudyPoint="5" StudyPointDescription="Accurate Reading">Name 6</StudentTalk2M> 
     <StudentTalk2MA>Name 7</StudentTalk2MA> 
     <StudentTalk3M StudyPoint="6" StudyPointDescription="Accurate Reading">Name 8</StudentTalk3M> 
     <StudentTalk3MA>Name 9</StudentTalk3MA> 
     <StudentTalk11 StudyPoint="7" StudyPointDescription="Accurate Reading">Name 10</StudentTalk11> 
     <StudentTalk11A>Name 11</StudentTalk11A> 
     <StudentTalk21 StudyPoint="8" StudyPointDescription="Accurate Reading">Name 12</StudentTalk21> 
     <StudentTalk21A>Name 13</StudentTalk21A> 
     <StudentTalk31 StudyPoint="9" StudyPointDescription="Accurate Reading">Name 14</StudentTalk31> 
     <StudentTalk31A>Name 15</StudentTalk31A> 
    </Meeting> 
    <Meeting> 
     <BibleReadingM StudyPoint="10" StudyPointDescription="Accurate Reading">Name 16</BibleReadingM> 
     <StudentTalk1M StudyPoint="11" StudyPointDescription="Accurate Reading">Name 17</StudentTalk1M> 
     <StudentTalk1MA>Name 18</StudentTalk1MA> 
     <StudentTalk2M StudyPoint="12" StudyPointDescription="Accurate Reading">Name 19</StudentTalk2M> 
     <StudentTalk2MA>Name 20</StudentTalk2MA> 
     <StudentTalk3M StudyPoint="13" StudyPointDescription="Accurate Reading">Name 21</StudentTalk3M> 
     <StudentTalk3MA>Name 22</StudentTalk3MA> 
    </Meeting> 
    <Meeting> 
     <BibleReadingM StudyPoint="14" StudyPointDescription="Accurate Reading">Name 23</BibleReadingM> 
     <BibleReading1 StudyPoint="15" StudyPointDescription="Accurate Reading">Name 24</BibleReading1> 
     <StudentTalk1M StudyPoint="16" StudyPointDescription="Accurate Reading">Name 25</StudentTalk1M> 
     <StudentTalk1MA>Name 26</StudentTalk1MA> 
     <StudentTalk2M StudyPoint="17" StudyPointDescription="Accurate Reading">Name 27</StudentTalk2M> 
     <StudentTalk2MA>Name 28</StudentTalk2MA> 
     <StudentTalk3M StudyPoint="18" StudyPointDescription="Accurate Reading">Name 29</StudentTalk3M> 
     <StudentTalk3MA>Name 30</StudentTalk3MA> 
     <StudentTalk11 StudyPoint="19" StudyPointDescription="Accurate Reading">Name 31</StudentTalk11> 
     <StudentTalk11A>Name 32</StudentTalk11A> 
     <StudentTalk21 StudyPoint="20" StudyPointDescription="Accurate Reading">Name 33</StudentTalk21> 
     <StudentTalk21A>Name 34</StudentTalk21A> 
     <StudentTalk31 StudyPoint="21" StudyPointDescription="Accurate Reading">Name 35</StudentTalk31> 
     <StudentTalk31A>Name 36</StudentTalk31A> 
    </Meeting> 
</MeetingWorkBook> 

Так что я хотел бы сделать XSL с для-каждого цикла, как упоминалось, что может получить доступ к следующему «встреча» узел из «текущего» узел собрания.

Понимаете? Благодарю.

+0

Пожалуйста, пост [mcve]. –

+2

Вы пробовали 'next-sibling :: Meeting [1]'? Если это не поможет, см. Комментарий @ michael.hor257k выше. –

+0

Привет, Даниэль. Благодарим вас за упоминание этого метода. Я не знал об этом. Я дам ему попробовать завтра и обновить обсуждение. –

ответ

0

Благодаря @DanielHaley я узнал, что должен был использовать следующее: sigling :: Meeting [1].

Вот мой окончательный сценарий, используя следующий-родственный метод:

<xsl:if test="position()!=last()"> 
    <!--No, it is not the last meeting. Show next weeks student assignments.--> 

    <!--Is next week a special event?--> 
    <xsl:if test="following-sibling::Meeting[1]/SpecialEvent=0"> 
    <!--No, it is not a special event.--> 
     Next weeks students are:<br /> 
     Main:<br /> 
     <xsl:value-of select="following-sibling::Meeting[1]/BibleReadingM"/><br /> 
     <xsl:value-of select="following-sibling::Meeting[1]/StudentTalk1M"/>/<xsl:value-of select="following-sibling::Meeting[1]/StudentTalk1MA"/><br /> 
     <xsl:value-of select="following-sibling::Meeting[1]/StudentTalk2M"/>/<xsl:value-of select="following-sibling::Meeting[1]/StudentTalk2MA"/><br /> 
     <xsl:value-of select="following-sibling::Meeting[1]/StudentTalk3M"/>/<xsl:value-of select="following-sibling::Meeting[1]/StudentTalk3MA"/><br /> 
    </xsl:if> 

    <!--Auxiliary class 1--> 
    <xsl:if test="following-sibling::Meeting[1]/NumberClasses&gt;=2"> 
     <br /> 
     Auxiliary class 1:<br /> 
     <xsl:value-of select="following-sibling::Meeting[1]/BibleReading1"/><br /> 
     <xsl:value-of select="following-sibling::Meeting[1]/StudentTalk11"/>/<xsl:value-of select="following-sibling::Meeting[1]/StudentTalk11A"/><br /> 
     <xsl:value-of select="following-sibling::Meeting[1]/StudentTalk21"/>/<xsl:value-of select="following-sibling::Meeting[1]/StudentTalk21A"/><br /> 
     <xsl:value-of select="following-sibling::Meeting[1]/StudentTalk31"/>/<xsl:value-of select="following-sibling::Meeting[1]/StudentTalk31A"/><br /> 
    </xsl:if> 

    <!--Auxiliary class 2--> 
    <xsl:if test="following-sibling::Meeting[1]/NumberClasses=3"> 
     <br /> 
     Auxiliary class 2:<br /> 
     <xsl:value-of select="following-sibling::Meeting[1]/BibleReading2"/><br /> 
     <xsl:value-of select="following-sibling::Meeting[1]/StudentTalk12"/>/<xsl:value-of select="following-sibling::Meeting[1]/StudentTalk12A"/><br /> 
     <xsl:value-of select="following-sibling::Meeting[1]/StudentTalk22"/>/<xsl:value-of select="following-sibling::Meeting[1]/StudentTalk22A"/><br /> 
     <xsl:value-of select="following-sibling::Meeting[1]/StudentTalk32"/>/<xsl:value-of select="following-sibling::Meeting[1]/StudentTalk32A"/><br /> 
    </xsl:if> 
</xsl:if> 
Смежные вопросы