Home     |     .Net Programming    |     cSharp Home    |     Sql Server Home    |     Javascript / Client Side Development     |     Ajax Programming

Ruby on Rails Development     |     Perl Programming     |     C Programming Language     |     C++ Programming     |     IT Jobs

Python Programming Language     |     Laptop Suggestions?    |     TCL Scripting     |     Fortran Programming     |     Scheme Programming Language


 
 
Cervo Technologies
The Right Source to Outsource

MS Dynamics CRM 3.0

Javascript / Client Side Development

XSLT: Transforming HTML Input Element's Values


Hi, I'm trying to transform the values entered into a form:

HTML:

<div id="container">
  <div id="bs">
    <input id="name" type="text"/>
    <p>PPPPP</p>
    <a href="#" onclick="return transform()">Do it!</a>
  </div>
</div>

XSLT:

    <xsl:template match="/">
        <strong><xsl:value-of select="//input[@type='text']/@value"/></
strong>
        --><xsl:value-of select="//p/text()"/>
    </xsl:template>

Java Script:

function transform() {
...

  xmlDoc = document.implementation.createDocument("", "", null);
  xmlRef = document.getElementById('bs');

  var clone = xmlDoc.importNode(xmlRef,true);
  xmlDoc.appendChild(clone);

  var fragment = xsltProcessor.transformToFragment(xmlDoc, document);

  document.getElementById("container").innerHTML = "";
  document.getElementById("container").appendChild(fragment);

...

}

The <p> element gets transformed, but not the input element.
.
Now, I understand that I can pull the values out of the form with Java
Script and simply change the XPath expression to a XSLT param, but why
can't the transformation pull the values directly?

<input type="text" value="grr!"/> will transform. Is the tree
structure for these two different? Humm, now that I think about it

document.getElementById('name').value

returns the value, whereas

document.getElementById('name').getAttribute('value')

returns null

Any explanations? Is it not possible to transform user supplied values
for input elements without passing the values into the style sheet as
parameters?

MaggotChild wrote:
> <input type="text" value="grr!"/> will transform. Is the tree
> structure for these two different? Humm, now that I think about it

> document.getElementById('name').value

> returns the value, whereas

> document.getElementById('name').getAttribute('value')

> returns null

> Any explanations? Is it not possible to transform user supplied values
> for input elements without passing the values into the style sheet as
> parameters?

I do not think it is possible, @value is the attribute value which is
different from the value property of a control as the attribute value
does not change when someone enters text in the control. So the XSLT
processor or the XPath engine does only have access to the attribute
value, not the value property.

--

        Martin Honnen
        http://JavaScript.FAQTs.com/

Add to del.icio.us | Digg this | Stumble it | Powered by Megasolutions Inc