HXNORMALIZE(1) HTML-XML-utils HXNORMALIZE(1)

hxnormalize - قالب‌بندی و مرتب‌سازی فایل‌های HTML

hxnormalize [ -x ] [ -X ] [ -e ] [ -d ] [ -s ] [ -L ] [ -i indent ] [ -l line-length ] [ -c commentmagic ] [ file-or-URL ]

دستور hxnormalize یک فایل HTML یا XML را به‌صورت مرتب و خوانا قالب‌بندی (pretty-print) می‌کند و همچنین تلاش می‌کند تا خطاهای کوچک HTML را برطرف سازد. خروجی همان فایل است، اما با حداکثر طول خط معین و با تورفتگی اختیاری برای مشخص کردن سطح تو در تویی هر خط.

گزینه‌های زیر پشتیبانی می‌شوند:

اعمال قواعد XML: عناصر خالی با یک اسلش در انتها نوشته می‌شوند (مانند <IMG />) و اگر ورودی HTML باشد، هر ‘<’ و ‘&’ درون عناصر <style> و <script> به‌صورت ‘&lt;’ و ‘&amp;’ اسکیپ می‌شوند. (ورودی به عنوان HTML فرض می‌شود مگر اینکه گزینه -X مشخص شده باشد.) این گزینه مستلزم -e است.
همیشه تگ‌های پایانی را درج می‌کند، حتی اگر HTML به آن‌ها نیازی نداشته باشد (برای مثال: </p> و </li>).
باعث می‌شود که hxnormalize ورودی را XML خوش‌ساخت (well-formed) در نظر بگیرد. این گزینه تلاشی برای استنتاج تگ‌های حذف‌شده HTML نمی‌کند، عناصری مانند <img> و <br> را خالی فرض نمی‌کند، و با ‘<’ و ‘&’ درون <style> و <script> مانند نویسه‌های عادی رفتار نمی‌کند.
حذف DOCTYPE از خروجی.
تنظیم تعداد فاصله‌ها برای تورفتگی هر سطح تو در تویی. مقدار پیش‌فرض ۲ است. همه عناصر باعث ایجاد تورفتگی نمی‌شوند. به‌طور کلی، عناصری که می‌توانند در یک محیط بلوکی قرار گیرند در خط جدیدی آغاز شده و باعث تورفتگی می‌شوند، اما عناصر درون‌خطی مانند EM و SPAN تورفتگی ایجاد نمی‌کنند.
حداکثر طول خطوط را تعیین می‌کند. hxnormalize خطوط را به گونه‌ای می‌شکند تا همه خطوط تا حد امکان طولانی باشند، اما از این طول بیشتر نشوند. مقدار پیش‌فرض ۷۲ است. کلماتی که طولانی‌تر از طول خط باشند شکسته نخواهند شد و از این طول فراتر می‌روند (یک «کلمه» دنباله‌ای از نویسه‌ها است که با فاصله خالی جدا شده‌اند). محتوای عناصر STYLE، SCRIPT و PRE مشمول شکستن خط نخواهند شد.
حذف تگ‌های <span> که هیچ ویژگی‌ای (attribute) ندارند.
حذف ویژگی‌های زائد ‘lang’ و ‘xml:lang’ (یعنی مواردی که مقدار آن‌ها با زبان به ارث رسیده از عنصر والد یکسان است).
کامنت‌ها معمولاً بلافاصله پس از متن پیشین قرار می‌گیرند. این حالت معمولاً برای کامنت‌های کوتاه مناسب است، اما برخی کامنت‌ها باید در یک خط جداگانه قرار گیرند. commentmagic یک رشته است و زمانی که این رشته درون یک کامنت دیده شود، hxnormalize یک خط خالی پیش از آن کامنت در خروجی قرار می‌دهد. برای مثال، -c "====" می‌تواند برای قرار دادن تمام کامنت‌های حاوی ‘====’ در یک خط جداگانه همراه با یک خط خالی پیش از آن‌ها به کار رود. به‌طور پیش‌فرض، با هیچ کامنتی بدین صورت رفتار نمی‌شود.

عملوند زیر پشتیبانی می‌شود:

نام یا نشانی اینترنتی (URL) یک فایل HTML. در صورت مشخص نشدن، ورودی استاندارد خوانده می‌شود.

مقادیر خروج زیر بازگردانده می‌شوند:

0
اجرای موفقیت‌آمیز.
> 0
خطایی در تجزیه فایل HTML رخ داده است. hxnormalize تلاش خواهد کرد خطا را تصحیح کرده و در هر صورت خروجی را تولید کند.

برای استفاده از یک پراکسی جهت دریافت فایل‌های راه دور، متغیرهای محیطی http_proxy و ftp_proxy را تنظیم کنید. برای مثال: http_proxy="http://localhost:8080"

قابلیت بازیابی خطا برای HTML ناصحیح ابتدایی است.

دستور hxnormalize تگ پایانی را در صورتی که فاصله خالی پس از آن احتمالاً مهم و معنا‌دار باشد حذف نخواهد کرد. برای مثال، اولین </p> را از ‘<div><p>text</p> <p>text</p></div>’ حذف نخواهد کرد.

دستور hxnormalize در حال حاضر تنها می‌تواند فایل‌های راه دور را از طریق پروتکل HTTP دریافت کند. این ابزار فایل‌های محافظت‌شده با گذرواژه یا فایل‌هایی را که محتوای آن‌ها به کوکی‌های HTTP (‘cookies’) وابسته است، مدیریت نمی‌کند.

هنگام تبدیل از XML به HTML (گزینه -X بدون گزینه -x)، تمام جفت‌های <![CDATA[ و ‘]]>’ حذف می‌شوند و موجودیت‌های نویسه‌ای &lt; و &gt; و &quot; و &apos; و &amp; گسترش می‌یابند (به‌ترتیب به ‘<’، ‘>’، ‘"’، ‘'’ و ‘&’)، اما هیچ‌کدام از دیگر موجودیت‌های نویسه‌ای گسترش داده نمی‌شوند. برای گسترش سایر موجودیت‌های نویسه‌ای، ابتدا ورودی را از طریق hxunent(1) هدایت (pipe) کنید.

برای محدود کردن خطوط به تعداد مشخصی از نویسه‌ها، hxnormalize خطوط را در محل فاصله‌ها (یا درون تگ‌ها) می‌شکند. برخی از سامانه‌های نوشتاری از فاصله میان کلمات استفاده نمی‌کنند و بنابراین ممکن است hxnormalize نتواند خطوط را بشکند، مگر در محل شکست‌های خطی که از قبل وجود دارند.

برای بلندتر کردن خطوط کوتاه، hxnormalize خطوط را ترکیب کرده و شکست خط را با یک فاصله جایگزین می‌کند؛ به جز در سامانه‌های نوشتاری که بین کلمات فاصله نمی‌گذارند، که در آن‌ها شکست خط با هیچ‌چیزی جایگزین نمی‌شود. hxnormalize در حال حاضر این کار اخیر را تنها برای ژاپنی، چینی، کره‌ای، خمری و تایلندی انجام می‌دهد. (متن باید به‌طور صحیح با ‘lang’ یا ‘xml:lang’ نشانه‌گذاری شده باشد.)

asc2xml(1), xml2asc(1), hxunent(1), UTF-8 (RFC 2279)

10 Jul 2011 7.x