XSLT は、 XPATHセレクターの上に基づく言語です。
宣言的なスタイルで
<xsl:template match="/">
<xsl:apply-templates select="/paragraph"/>
</xsl:template>
<xsl:template match="paragraph">
<p>
<xsl:apply-templates select="run"/>
<xsl:apply-templates select="list"/>
</p>
</xsl:template>
<xsl:template match="paragraph/list">
<ul>
...
</ul>
</xsl:template>
<xsl:template match="paragraph/run">
<span>
...
</span>
</xsl:template>
また、命令型スタイルで書くこともできます
<xsl:template match="/">
<xsl:apply-templates select="/paragraph"/>
</xsl:template>
<xsl:template match="paragraph">
<p>
<xsl:for-each select="run">
<span>
...
</span>
</xsl:for-each>
<xsl:for-each select="list">
<ul>
...
</ul>
</xsl:for-each>
</p>
</xsl:template>