xsl:template match doesn't find matches

后端 未结 3 830
没有蜡笔的小新
没有蜡笔的小新 2021-02-20 08:05

I\'m trying to convert some Xaml to HTML using the .NET XslCompiledTransform and am running into difficulties getting the xslt to match Xaml tags. For instance with this Xaml i

相关标签:
3条回答
  • 2021-02-20 08:10

    Just try changing

    "xsl:template match='/'"

    tag in your xsl file with

    "xsl:template match='*'"

    This should give you the desired output.

    0 讨论(0)
  • 2021-02-20 08:22

    It works when I remove this from your source document:

    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    

    I don't believe your last two templates are matching at all. (You can test by putting something like a wrapping <div> in your FlowDocument template.)

    0 讨论(0)
  • 2021-02-20 08:35

    Yes, it's a problem with the namespace. All of the elements in your input document are in the namespace http://schemas.microsoft.com/winfx/2006/xaml/presentation. Your template is trying to match elements that are in the default namespace, and it's not finding any.

    You need to declare this namespace in your transform, assign it a prefix, and then use that prefix in any patterns that are intended to match elements in that namespace. So your XSLT should look something like this:

    <?xml version="1.0" encoding="utf-8"?>
    <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
        xmlns:msxsl="urn:schemas-microsoft-com:xslt" 
        xmlns:p="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
        exclude-result-prefixes="msxsl"/>
    
    <xsl:output method="html" indent="yes"/>
    
    <xsl:template match="/">
      <html>
        <body>
          <xsl:apply-templates />
        </body>
      </html>
    </xsl:template>
    
    <xsl:template match="p:FlowDocument">
      <xsl:apply-templates />
    </xsl:template>
    
    <xsl:template match="p:Paragraph" >
      <p>
        <xsl:apply-templates />
      </p>
    </xsl:template>
    
    0 讨论(0)
提交回复
热议问题