<xsl:stylesheet xmlns:x="http://www.w3.org/2001/XMLSchema"
    xmlns:d="http://schemas.microsoft.com/sharepoint/dsp" version="1.0"
    xmlns:ddwrt="http://schemas.microsoft.com/WebParts/v2/DataView/runtime"
    xmlns:asp="http://schemas.microsoft.com/ASPNET/20"
    xmlns:__designer="http://schemas.microsoft.com/WebParts/v2/DataView/designer"
    xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:msxsl="urn:schemas-microsoft-com:xslt"
    xmlns:SharePoint="Microsoft.SharePoint.WebControls" xmlns:ddwrt2="urn:frontpage:internal"
    exclude-result-prefixes="xsl msxsl ddwrt ddwrt2 __designer asp SharePoint d x">
    <xsl:output method="html" indent="yes"/>
    
    <!-- This template is the "wrapper" or "container" for the custom view. -->
    <xsl:template match="/">
        <!-- This is the actual wrapper element that will be emitted -->
        <section>
            
            <!-- This will tell the data view to look for the actual content
                 and come back when it's done. -->
            <xsl:apply-templates/>
            
        </section><!-- end wrapper -->
    </xsl:template>

    <!-- And now, the repeating section. The <xsl:template> shouldn't change, but you can change
         its content -->
<xsl:template match="Row">
    <article data-articleid="{@ID}"><!-- Include the article ID as an HTML5 data-attribute -->
        <header>
            <h1><xsl:value-of select="@Title"/></h1>
            <p>Created on <xsl:value-of select="@Created"/> by <xsl:value-of select="@Author.title"/></p>
            <p>Expires on: <xsl:value-of select="@Expires"/></p>
        </header>
        <xsl:value-of select="@Body" disable-output-escaping="yes"/>
    </article>
</xsl:template>
</xsl:stylesheet>