Episode.xsl

Vaquita Wiki
Tutor (토론 | 기여)님의 2026년 8월 20일 (목) 17:15 판
<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet version="1.0" 
    xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
    xmlns="http://www.w3.org/1999/xhtml">

    <xsl:output method="html" encoding="UTF-8" indent="yes" doctype-system="about:blank"/>

    <!-- 루트 템플릿 -->
    <xsl:template match="/">
        <html lang="ko">
        <head>
            <meta charset="UTF-8"/>
            <meta name="viewport" content="width=device-width, initial-scale=1.0"/>
            <title><xsl:value-of select="episode/title"/></title>
            <style>
                body {
                    font-family: -apple-system, BlinkMacSystemFont, "Apple SD Gothic Neo", "Pretendard", "Noto Sans KR", sans-serif;
                    background-color: #f8fafc;
                    color: #1e293b;
                    margin: 0;
                    padding: 40px 20px;
                    display: flex;
                    justify-content: center;
                }
                .card {
                    background: #ffffff;
                    max-width: 720px;
                    width: 100%;
                    border-radius: 16px;
                    box-shadow: 0 4px 20px rgba(0, 0, 0, 0.05);
                    border: 1px solid #e2e8f0;
                    padding: 40px;
                    box-sizing: border-box;
                }
                .badge {
                    display: inline-block;
                    background: #e0e7ff;
                    color: #4338ca;
                    font-size: 0.85rem;
                    font-weight: 600;
                    padding: 4px 12px;
                    border-radius: 20px;
                    margin-bottom: 16px;
                    text-transform: uppercase;
                    letter-spacing: 0.05em;
                }
                h1.title {
                    font-size: 1.75rem;
                    font-weight: 700;
                    color: #0f172a;
                    margin: 0 0 24px 0;
                    line-height: 1.35;
                    border-bottom: 2px solid #f1f5f9;
                    padding-bottom: 16px;
                }
                .narrative-box {
                    font-size: 1.05rem;
                    line-height: 1.8;
                    color: #334155;
                    white-space: pre-line; /* XML 본문의 줄바꿈을 그대로 유지 */
                    word-break: keep-all;
                }
            </style>
        </head>
        <body>
            <div class="card">
                <span class="badge">Episode</span>
                <h1 class="title">
                    <xsl:value-of select="episode/title"/>
                </h1>
                <div class="narrative-box">
                    <xsl:value-of select="episode/narrative"/>
                </div>
            </div>
        </body>
        </html>
    </xsl:template>

</xsl:stylesheet>