Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/xslt/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Xslt XSL 101-如何为给定的XML文档生成基本XSL样式表?_Xslt - Fatal编程技术网

Xslt XSL 101-如何为给定的XML文档生成基本XSL样式表?

Xslt XSL 101-如何为给定的XML文档生成基本XSL样式表?,xslt,Xslt,以下是将IIS 6/Windows Server 2003网站的配置保存到文件中时得到的信息片段: <?xml version ="1.0"?> <configuration xmlns="urn:microsoft-catalog:XML_Metabase_V64_0"> <MBProperty> <IIsWebServer Location ="/LM/W3SVC/1" AppPoolId="DefaultAppPool"

以下是将IIS 6/Windows Server 2003网站的配置保存到文件中时得到的信息片段:

<?xml version ="1.0"?>
<configuration xmlns="urn:microsoft-catalog:XML_Metabase_V64_0">
<MBProperty>
<IIsWebServer   Location ="/LM/W3SVC/1"
        AppPoolId="DefaultAppPool"
        DefaultDoc="Default.htm,Default.asp,index.htm,iisstart.htm,Default.aspx"
    ServerAutoStart="FALSE"
    ServerBindings=":80:"
    ServerComment="Default Web Site"
    ServerSize="1"
>
</IIsWebServer>
<IIsWebServer   Location ="/LM/W3SVC/1020944513"
    AuthFlags="0"
    LogPluginClsid="{FF160663-DE82-11CF-BC0A-00AA006111E0}"
    ServerAutoStart="TRUE"
    ServerBindings="161.230.8.183:80:"
    ServerComment="staging.magazinefundraising.com"
>
</IIsWebServer>
<IIsWebServer   Location ="/LM/W3SVC/103632312"
    AuthFlags="0"
    LogPluginClsid="{FF160663-DE82-11CF-BC0A-00AA006111E0}"
    ServerAutoStart="TRUE"
    ServerBindings="161.230.9.48:80:"
    ServerComment="QSP2.Downtime"
>
</IIsWebServer>
</MBProperty>
</configuration>
因此,结果可能类似于:

ServerComment     ServerBindings     AuthFlags  
-------------     --------------     ---------  
QSP2.Downtime     161.230.9.48:80:   0  
等等


谢谢

XSL可以是这样的:

<?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:mb="urn:microsoft-catalog:XML_Metabase_V64_0"
    exclude-result-prefixes="msxsl">
    <xsl:output method="text" indent="yes"/>

    <xsl:template match="/">
      ServerComment&#160;&#160;&#160;ServerBindings&#160;&#160;&#160;AuthFlags

      <xsl:apply-templates />
    </xsl:template>

  <xsl:template match="mb:IIsWebServer">

    <xsl:value-of select="./@ServerComment" />
    <xsl:text>&#160;</xsl:text>
    <xsl:value-of select="./@ServerBindings" />
    <xsl:text>&#160;</xsl:text>
    <xsl:value-of select="./@AuthFlags" />

  </xsl:template>
</xsl:stylesheet>

服务器评论   服务器绑定   AuthFlags
 
 
当然,你会想美化它:-)但它基本上是有效的

这是否是正确的选择和最好的技术,完全取决于您:-)但这是可以做到的-没问题


Marc

正如Emil所说,XSL并不完全适合文本格式。然而,如果输出HTML,您应该能够实现您的目标。如下所示:

<?xml version="1.0" encoding="utf-8"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
    <xsl:template match="/">
<table>
    <tr>
        <th>ServerComment</th>
        <th>ServerBindings</th>
        <th>AuthFlags</th>
    </tr>
        <xsl:for-each select="/configuration/MBProperty/IIsWebServer">
    <tr>
        <td><xsl:value-of select="@ServerComment" /></td>
        <td><xsl:value-of select="@ServerBindings" /></td>
        <td><xsl:value-of select="@AuthFlags" /></td>
    </tr>
        </xsl:for-each>
</table>
    </xsl:template>
</xsl:stylesheet>

服务器评论
服务器绑定
AuthFlags

如果您打算开发一个仅用于查看目的的表格显示,这可能是您的最佳选择。但是,如果您计划以另一种方式使用数据,那么最好使用Marc或Emil的方法。

Marc-另一件事对您来说-我很难将输出显示为表格格式-即使我在一条长长的包装线上包含属性的定义,它仍然会显示在一条大线上。思想?谢谢,所以现在您正试图输出HTML,对吗?你有没有改成说??
<?xml version="1.0" encoding="utf-8"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
    <xsl:template match="/">
<table>
    <tr>
        <th>ServerComment</th>
        <th>ServerBindings</th>
        <th>AuthFlags</th>
    </tr>
        <xsl:for-each select="/configuration/MBProperty/IIsWebServer">
    <tr>
        <td><xsl:value-of select="@ServerComment" /></td>
        <td><xsl:value-of select="@ServerBindings" /></td>
        <td><xsl:value-of select="@AuthFlags" /></td>
    </tr>
        </xsl:for-each>
</table>
    </xsl:template>
</xsl:stylesheet>