Может кто-нибудь помочь мне с логикой? - PullRequest
4 голосов
/ 05 ноября 2011

Я не могу развить эту логику, кто-нибудь может мне помочь с этим?

У меня есть большая логика, чтобы я застрял на ней.

У меня есть полностью динамический XML - то есть его узел Detail может увеличиваться и уменьшаться в числе.
И подузлы узлов деталей также могут увеличиваться и уменьшаться в числе.

<?xml version="1.0" encoding="utf-8" ?>
<body>
  <detail>
    <FirstName>t1 </FirstName>
    <LastName>t2</LastName>
    <Company>t3</Company>
    <Country>t4</Country>
    <Proviance>MP</Proviance>
  </detail>

  <detail>
    <FirstName>t5 </FirstName>
    <LastName>t6</LastName>
    <Company>t7</Company>
    <Country>t8</Country>
    <Proviance>t9</Proviance>
  </detail>

  <detail>
    <FirstName>t10 </FirstName>
    <LastName>t11</LastName>
    <Company>t12</Company>
    <Country>t13</Country>
    <Proviance>t14</Proviance>
  </detail>

</body>

Я читаю XML так:

 xmlhttp = new XMLHttpRequest();
        xmlhttp.open("GET", "/TinyEditor/PreviewBody.xml", true);
        xmlhttp.send();
        xmlDoc = xmlhttp.responseXML;

Теперь

Каждый раз, когда я так читаю HTML-контент из DOM, он каждый раз меняется:

      var x = tinyMCEPopup.editor.getContent().toString();
        alert(x);

the x gets the value like this (x can be different at different times) 

<p>Headline Dear <br /> <br /> <img src="Images/Untitled.png" alt="" /> <br /> <br />Dear <strong>FirstName&nbsp; <strong> LastName</strong></strong></p>
<p><strong><br /></strong></p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; I am from company <strong> Company</strong> that is located in <strong> Country</strong>,&nbsp; <strong> Proviance</strong>, <strong> City.</strong></p>
<p><strong><br /></strong></p>
<p>Thanks</p>
<p><strong>FirstName</strong> <strong> LastName</strong> </p>
<p><strong><br /></strong></p>
<p>&nbsp;</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </p>

Теперь я хочу найти каждый элемент детализации в XML в этом HTML и заменить текст в HTML (FirstName, LastName) на значение элемента в XML. узлы для каждой детали. Узел.
После этого я перепишу отформатированный контент HTML в DOM. Эту логику я не могу развить, кто-нибудь может мне помочь с этим?


Мои усилия:

<xsl:for-each select="Home/menu">
    <xsl:variable name="i"><xsl:value-of select="1+position()" /></xsl:variable>
    <script language="javascript">
        var id = '<xsl:value-of select="$i"/>';
        var firstname = '<xsl:value-of select="firstname"/>';
        var lastrname = '<xsl:value-of select="lastrname"/>';
        var firstname = '<xsl:value-of select="firstname"/>';
        var lastrname = '<xsl:value-of select="lastrname"/>';
        var firstname = '<xsl:value-of select="firstname"/>';
        var lastrname = '<xsl:value-of select="lastrname"/>';
        $('#CurrProg-'+id).html(functionname('FirstName',firstname));
        $('#CurrProg-'+id).html(functionname('LastName',firstname));
        $('#CurrProg-'+id).html(functionname('tagname',firstname));
        $('#CurrProg-'+id).html(functionname('tagname',firstname));
        $('#CurrProg-'+id).html(functionname('tagname',firstname));
        $('#CurrProg-'+id).html(functionname('tagname',firstname));
    </script>
</xsl:for-each>

и функция

    $(document).ready(function () {

        /* load all xsl and xml file */

        xmlDoc = $.xsl.load('XML/PreviewBody.xml');
        xslHome = $.xsl.load('XSL/Preview.xsl');

        $('#Page_Content').getTransform(
    xslHome,
    xmlDoc
);

    });

 function textReplace(actualtext, replacementtext) {
        var actualtext = new RegExp(actualtext, 'ig');
        document.getElementById('content').innerHTML = x.replace(actualtext, replacementtext);

    }

Но это не работает для динамического XML, я должен исправить узел заранее ... Я хочу сделать это во время выполнения.

Ответы [ 2 ]

4 голосов
/ 05 ноября 2011

Я бы предпочел использовать JQuery для этой цели. Это очень удобно для таких задач, и вам не нужно создавать код для каждого браузера.

http://www.vagrantradio.com/2009/10/how-to-parse-xml-using-jquery-and-ajax.html

0 голосов
/ 14 ноября 2011

вы должны использовать xslt для создания контента, а не вашего скрипта

если вы все еще хотите сделать то, что вы делаете, я могу рекомендовать следующее: используйте {FirstName} вместо FirstName, поскольку вы можете найти его лучше (вхождение для FirstName, которое нельзя заменить) и b.t.w. брось свой xslt и зацикливайся на xml с dom

также я не думаю, что вы используете new RegExp() правильные руководства по проверке

b.t.w. Вы говорите, что для любой детали elelemnt, но не выгодно, вы должны выбрать 1 деталь-элемент и пройти через его родные элементы

это хороший код замены в js (не знаю про jquery (извините))

function textReplace(actualtext, replacementtext) {
  document.getElementById('content').innerHTML = document.getElementById('content').innerHTML.replace(actualtext,replacementtext);
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...