javascript - 我如何在使用 XSLT 和 jQuery 的书中获得动态标题?

标签 javascript jquery xml xslt xpath

我有这个xml :

<quran>
    <row>
        <WID>10</WID>
        <word>بسم</word>
        <SID>1</SID>
        <Ayeh>0</Ayeh>
        <Joze>1</Joze>
        <Hezb>1</Hezb>
        <ParentID>4556</ParentID>
        <Page>1</Page>
        <Joint>1</Joint>
        <SName>فاتحه</SName>
    </row>
    <row>
        <WID>11</WID>
        <word>الله</word>
        <SID>1</SID>
        <Ayeh>0</Ayeh>
        <Joze>1</Joze>
        <Hezb>1</Hezb>
        <ParentID>3565</ParentID>
        <Page>1</Page>
        <Joint>1</Joint>
        <SName>فاتحه</SName>
    </row>
    <row>
        <WID>12</WID>
        <word>الرحمن</word>
        <SID>1</SID>
        <Ayeh>0</Ayeh>
        <Joze>1</Joze>
        <Hezb>1</Hezb>
        <ParentID>2876</ParentID>
        <Page>1</Page>
        <Joint>1</Joint>
        <SName>فاتحه</SName>
    </row>
    <row>
        <WID>14</WID>
        <word>الْحَمْدُ</word>
        <SID>1</SID>
        <Ayeh>2</Ayeh>
        <Joze>1</Joze>
        <Hezb>1</Hezb>
        <ParentID>2732</ParentID>
        <Page>1</Page>
        <Joint>1</Joint>
        <SName>فاتحه</SName>
    </row>
    <row>
        <WID>15</WID>
        <word>للّهِ</word>
        <SID>1</SID>
        <Ayeh>2</Ayeh>
        <Joze>1</Joze>
        <Hezb>1</Hezb>
        <ParentID>12105</ParentID>
        <Page>1</Page>
        <Joint>1</Joint>
        <SName>فاتحه</SName>
    </row>
    <row>
        <WID>5618</WID>
        <word>بسم</word>
        <SID>2</SID>
        <Ayeh>0</Ayeh>
        <Joze>1</Joze>
        <Hezb>1</Hezb>
        <ParentID>4556</ParentID>
        <Page>2</Page>
        <Joint>2</Joint>
        <SName>بقره</SName>
    </row>
    <row>
        <WID>5619</WID>
        <word>الله</word>
        <SID>2</SID>
        <Ayeh>0</Ayeh>
        <Joze>1</Joze>
        <Hezb>1</Hezb>
        <ParentID>3565</ParentID>
        <Page>2</Page>
        <Joint>2</Joint>
        <SName>بقره</SName>
    </row>
    <row>
        <WID>5620</WID>
        <word>الرحمن</word>
        <SID>2</SID>
        <Ayeh>0</Ayeh>
        <Joze>1</Joze>
        <Hezb>1</Hezb>
        <ParentID>2876</ParentID>
        <Page>2</Page>
        <Joint>2</Joint>
        <SName>بقره</SName>
    </row>
    <row>
        <WID>4784</WID>
        <word>الم</word>
        <SID>2</SID>
        <Ayeh>1</Ayeh>
        <Joze>1</Joze>
        <Hezb>1</Hezb>
        <ParentID>3567</ParentID>
        <Page>2</Page>
        <Joint>2</Joint>
        <SName>بقره</SName>
    </row>
    <row>
        <WID>5105</WID>
        <word>ذَلِكَ</word>
        <SID>2</SID>
        <Ayeh>2</Ayeh>
        <Joze>1</Joze>
        <Hezb>1</Hezb>
        <ParentID>7234</ParentID>
        <Page>2</Page>
        <Joint>2</Joint>
        <SName>بقره</SName>
    </row>
    <quran>

我需要插入 <SName>标签前 <Ayeh>那是 <Ayeh>0</Ayeh> . 我写了一个 jquery 代码,但我不知道如何在 jquery 中使用 xslt?(下面的代码不起作用)

$('.quranText .ayaNumber').each(function(){
    if($.trim($(this).text())=='﴿0﴾')
       $(this).closest('.aya').prepend('<div class="suraHeaderFrame">'
                    +'<div class="suraHeaderText">'+ 

                                        <xsl:for-each-group select="//row[./Page/text()=$page]" group-by="Page">
                                            <xsl:for-each-group select="current-group()" group-by="SID">
                                                <xsl:for-each-group select="current-group()" group-by="concat(Page,SID)">
                                                <xsl:choose > 
                                                     <xsl:when test = "./Ayeh = 1 or ./Ayeh = 0" >  
                                                    <xsl:value-of select="SName"/>
                                                        </xsl:when>
                                                  </xsl:choose>
                                                </xsl:for-each-group>
                                            </xsl:for-each-group>
                                        </xsl:for-each-group>

 +'</div>'
                +'</div>');
});

我应该说一页中经常有很多<Ayeh>0</Ayeh> . 我正在写一个与此相同的网站:http://tanzil.net/#109:1 .

最佳答案

看起来你应该使用 parseXML http://api.jquery.com/jQuery.parseXML/

var xml = "<?xml version='1.0'?><quran><row><WID>10</WID><word>بسم</word><SID>1</SID><Ayeh>0</Ayeh><Joze>1</Joze><Hezb>1</Hezb><ParentID>4556</ParentID><Page>1</Page><Joint>1</Joint><SName>فاتحه</SName></row><row><WID>11</WID><word>الله</word><SID>1</SID><Ayeh>0</Ayeh><Joze>1</Joze><Hezb>1</Hezb><ParentID>3565</ParentID><Page>1</Page><Joint>1</Joint><SName>فاتحه</SName></row><row><WID>12</WID><word>الرحمن</word><SID>1</SID><Ayeh>0</Ayeh><Joze>1</Joze><Hezb>1</Hezb><ParentID>2876</ParentID><Page>1</Page><Joint>1</Joint><SName>فاتحه</SName></row><row><WID>14</WID><word>الْحَمْدُ</word><SID>1</SID><Ayeh>2</Ayeh><Joze>1</Joze><Hezb>1</Hezb><ParentID>2732</ParentID><Page>1</Page><Joint>1</Joint><SName>فاتحه</SName></row><row><WID>15</WID><word>للّهِ</word><SID>1</SID><Ayeh>2</Ayeh><Joze>1</Joze><Hezb>1</Hezb><ParentID>12105</ParentID><Page>1</Page><Joint>1</Joint><SName>فاتحه</SName></row><row><WID>5618</WID><word>بسم</word><SID>2</SID><Ayeh>0</Ayeh><Joze>1</Joze><Hezb>1</Hezb><ParentID>4556</ParentID><Page>2</Page><Joint>2</Joint><SName>بقره</SName></row><row><WID>5619</WID><word>الله</word><SID>2</SID><Ayeh>0</Ayeh><Joze>1</Joze><Hezb>1</Hezb><ParentID>3565</ParentID><Page>2</Page><Joint>2</Joint><SName>بقره</SName></row><row><WID>5620</WID><word>الرحمن</word><SID>2</SID><Ayeh>0</Ayeh><Joze>1</Joze><Hezb>1</Hezb><ParentID>2876</ParentID><Page>2</Page><Joint>2</Joint><SName>بقره</SName></row><row><WID>4784</WID><word>الم</word><SID>2</SID><Ayeh>1</Ayeh><Joze>1</Joze><Hezb>1</Hezb><ParentID>3567</ParentID><Page>2</Page><Joint>2</Joint><SName>بقره</SName></row><row><WID>5105</WID><word>ذَلِكَ</word><SID>2</SID><Ayeh>2</Ayeh><Joze>1</Joze><Hezb>1</Hezb><ParentID>7234</ParentID><Page>2</Page><Joint>2</Joint><SName>بقره</SName></row></quran>"
xmlDoc = $.parseXML( xml ),
$xml = $( xmlDoc ),
$xml.find( "SName" ).each(function(){
    $(this).siblings('Ayeh').before($(this));
})

这会将 SName 节点移动到其兄弟 Ayeh 节点之前。 $xml[0] 将成为您可以使用的 xml 文档,或者您可以将 jQuery 对象 $xml 附加到您的 div。

关于javascript - 我如何在使用 XSLT 和 jQuery 的书中获得动态标题?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18169187/

相关文章:

javascript - 不使用 XHR 加载资源

Java xml 保存程序优化

sql-server - XPath 从 sql 表列中读取值

javascript - Dotnetnuke 从模块调用 ajax

javascript - 如何在 Angular 2 中重新加载组件的内容?

javascript - 如何为树中每个深度嵌套的节点管理状态 'collapsed'

javascript - 在 JS 中编写原型(prototype)继承的最简洁方法

php - 从 MySQL 进行表单日期验证的 AJAX 调用在页面刷新之前不会再次工作

javascript - iOS 上的 Jquery 移动 - 动量滚动可防止调用单击处理程序

xml - xsd:dateTime 到 Java OffsetDateTime