everyone!I'm building a website based on someIt works quite good at first, but lately, as the templates grow more complicated, something strange happened.I use the "copy-of" element to copy the data into the stylesheets. Here's the code:<div class="section1"> <xsl:copy-of select="article/bodydata/*" /></div>So, basically, I'm copying all child elements of the "bodydata" node into <div />.But it doesn't work. For example, I've got an <img /> element in the bodydata, and that image does not appear if I visit theSo, here's my question, can I view the combined output of theAnd any suggestions on what might be wrong? I'm quite new to xslt, so it seems that I misunderstood what XSLT really does. Thanks!UPDATETo illustrate the problem, I wrote a little sample.First, I created a sample <?So, you can see, all nodes in "bodydata" element are html elements that needs to be show on webpage. In order to display that, I created a sample xsl file.<?And the result is like this:The img element just disappears.And next, I copied the bodydata elements into the section part, and formed a new html file.<html And the result here is:And the image appears.So I'm wondering what's wrong here. 解决方案 Consider to show us minimal but complete samples to demonstrate the problem, otherwise it is hard to tell. xsl:copy-of sounds like the right approach to me, assuming the bodydata element has HTML elements as the child elements. As for looking at the transformation result, these days most browsers come with a developer tool (or you can install one like Firebug), then you can hit F12 to see the DOM tree of the document in the browser to inspect the result. As for an element copied to the result tree not showing up, in general it could be a namespace problem (i.e. copying HTML namespace-less img to XHTML result document). So show us more details as to which browser(s) you have tried, which output method your XSLT has, which version of HTML you are trying to create as the transformation result (i.e. HTML 4.01, XHTML 1.0, HTML5).[edit]With your current samples where you use a root element named html in the XHTML 1.0 namespace for the result tree, Firefox/Mozilla render your result as img element from the input img element in no namespace into an XHTML document, so due to the lack of the right namespace on the img element the browser does not recognize the img element as an XHTML img element. So you either need to change your input don't use a namespace for the document's root element, you set <xsl:output method="html" version="4.01"/> or <xsl:output method="html" version="5.0"/>. That way the problem should go away.As an alternative, if you really want the result to be XHTML but you want to copy an img element in no namespace into the XHTML result tree, the proper way would be not to use copy-of, instead you would use <xsl:apply-templates/> and then you would need to write templates that transform the elements you need into the XHTML namespace e.g.<xsl:template match="img | p | center"> <xsl:element name="{local-name()}" namespace="http://www.w3.org/1999/xhtml"> <xsl:copy-of select="@*"/> <xsl:apply-templates/> </xsl:element></xsl:template>In my view with all browser vendors focusing on HTML5 without namespaces I would however suggest not to transform to XHTML and instead target HTML 4.01 or HTML5 without namespaces, you get better cross-browser interoperability with XSLT 1.0 in the browser. 这篇关于如何在浏览器中查看 xsl 输出?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持! 上岸,阿里云!
09-06 05:00