20260326

【停止中のフォント】ATS (Apple Font Registration System)の内容のHTML出力 


【停止中のフォント】ATS (Apple Font Registration System)の内容のHTML出力 

ダウンロードはこちらから
NOTE記事一覧ですnote.com

【スクリプトエディタで開く】 |

ATS_FONT_LIST_HTML_FontRegistry.scpt
ソース
001#!/usr/bin/env osascript
002----+----1----+----2----+-----3----+----4----+----5----+----6----+----7
003(*
004ATS (Apple Font Registration System)の内容のTSV出力
005FontRegistryの内容の取得です
006
007com.cocolog-nifty.quicktimer.icefloe *)
008----+----1----+----2----+-----3----+----4----+----5----+----6----+----7
009use AppleScript version "2.8"
010use framework "Foundation"
011use framework "AppKit"
012use scripting additions
013property refMe : a reference to current application
014######################
015#PLIST
016set appFileManager to refMe's NSFileManager's defaultManager()
017set ocidURLsArray to (appFileManager's URLsForDirectory:(refMe's NSLibraryDirectory) inDomains:(refMe's NSUserDomainMask))
018set ocidLibraryDirPathURL to ocidURLsArray's firstObject()
019set ocidFilePathURL to ocidLibraryDirPathURL's URLByAppendingPathComponent:("Preferences/com.apple.FontRegistry.user.plist") isDirectory:(false)
020#HTML保存先
021set ocidHomeDirURL to appFileManager's homeDirectoryForCurrentUser()
022set ocidSitesDirPathURL to ocidHomeDirURL's URLByAppendingPathComponent:("Sites") isDirectory:(true)
023set ocidHTMLSaveDirPathURL to ocidSitesDirPathURL's URLByAppendingPathComponent:("FontList") isDirectory:(true)
024set ocidHTMLSaveDirPath to ocidHTMLSaveDirPathURL's |path|()
025set boolDirExists to appFileManager's fileExistsAtPath:(ocidHTMLSaveDirPath) isDirectory:(true)
026if boolDirExists is false then
027   set ocidAttrDict to refMe's NSMutableDictionary's alloc()'s init()
028   ocidAttrDict's setValue:(448) forKey:(refMe's NSFilePosixPermissions)
029   set listDone to appFileManager's createDirectoryAtURL:(ocidHTMLSaveDirPathURL) withIntermediateDirectories:(true) attributes:(ocidAttrDict) |error|:(reference)
030   if (item 1 of listDone) is false then
031      set strErrorNO to (item 2 of listDone)'s code() as text
032      set strErrorMes to (item 2 of listDone)'s localizedDescription() as text
033      refMe's NSLog("■:" & strErrorNO & strErrorMes)
034      log "createDirectoryAtURL エラーしました" & strErrorNO & strErrorMes
035      return false
036   end if
037end if
038#出力ファイル HTML
039set strTime to doGetDateNo("yyyyMMdd_HHmmss") as text
040set strHTMLFileName to ("ATSFontsList." & strTime & ".html") as text
041set ocidSaveHTMLPathURL to ocidHTMLSaveDirPathURL's URLByAppendingPathComponent:(strHTMLFileName) isDirectory:(false)
042######################
043#NSDATA
044set ocidOption to (refMe's NSDataReadingMappedIfSafe)
045set listResponse to refMe's NSData's alloc()'s initWithContentsOfURL:(ocidFilePathURL) options:(ocidOption) |error|:(reference)
046set ocidReadData to (item 1 of listResponse)
047#NSPropertyListSerialization
048set ocidFromat to (refMe's NSPropertyListBinaryFormat_v1_0)
049set ocidOption to (refMe's NSPropertyListMutableContainersAndLeaves)
050set listResponse to (refMe's NSPropertyListSerialization's propertyListWithData:(ocidReadData) options:(ocidOption) format:(ocidFromat) |error|:(reference))
051set ocidPlistDict to (item 1 of listResponse)
052set ocidDisableArray to ocidPlistDict's objectForKey:("DisabledFonts")
053if ocidDisableArray = (missing value) then
054   return "使用停止になっているフォントはありませんでした"
055end if
056######################
057#戻り値整形
058set strTab to ("" & tab & "") as text
059set strLF to ("" & linefeed & "") as text
060set strCR to ("" & return & "") as text
061set ocidSortedArray to refMe's NSMutableArray's alloc()'s init()
062set numCnt to 0 as integer
063repeat with itemURLString in ocidDisableArray
064   
065   set ocidURL to (refMe's NSURL's alloc()'s initWithString:(itemURLString))
066   set ocidFilePath to ocidURL's |path|()
067   set ocidURLArray to (itemURLString's componentsSeparatedByString:("#postscript-name="))
068   set ocidFileURLStr to ocidURLArray's firstObject()
069   set ocidPsName to ocidURLArray's lastObject()
070   set ocidFileName to ocidURL's lastPathComponent()
071   #
072   set ocidLineString to refMe's NSMutableString's alloc()'s init()
073   (ocidLineString's appendString:(ocidPsName))
074   (ocidLineString's appendString:(strTab))
075   (ocidLineString's appendString:(ocidFileName))
076   (ocidLineString's appendString:(strTab))
077   (ocidLineString's appendString:(ocidFilePath))
078   (ocidLineString's appendString:(strTab))
079   (ocidLineString's appendString:(ocidFileURLStr))
080   (ocidLineString's appendString:(strTab))
081   (ocidSortedArray's addObject:(ocidLineString))
082end repeat
083set ocidReadArray to (missing value)
084
085#ソート
086set ocidSortedArray to ocidSortedArray's sortedArrayUsingSelector:("localizedStandardCompare:")
087
088######################
089#本処理 HTML生成
090set ocidHomeDirURL to appFileManager's homeDirectoryForCurrentUser()
091set ocidSitesDirPathURL to ocidHomeDirURL's URLByAppendingPathComponent:("Sites") isDirectory:(true)
092set ocidHTMLSaveDirPathURL to ocidSitesDirPathURL's URLByAppendingPathComponent:("Apple/FontList") isDirectory:(true)
093set ocidAttrDict to refMe's NSMutableDictionary's alloc()'s init()
094ocidAttrDict's setValue:(448) forKey:(refMe's NSFilePosixPermissions)
095set listDone to appFileManager's createDirectoryAtURL:(ocidHTMLSaveDirPathURL) withIntermediateDirectories:(true) attributes:(ocidAttrDict) |error|:(reference)
096#出力ファイル HTML
097set strTime to doGetDateNo("yyyyMMdd_HHmmss") as text
098set strHTMLFileName to ("ATSFontsList." & strTime & ".html") as text
099set ocidSaveHTMLPathURL to ocidHTMLSaveDirPathURL's URLByAppendingPathComponent:(strHTMLFileName) isDirectory:(false)
100#headerに渡すエレメント
101set ocidSetHeaderElement to (refMe's NSXMLElement's elementWithName:("div"))
102set ocidH3Element to refMe's NSXMLElement's elementWithName:("h3")
103(ocidH3Element's setStringValue:("ATS(Apple Type Services)FontRegistry停止中フォント一覧"))
104(ocidSetHeaderElement's addChild:(ocidH3Element))
105###################
106#footerに渡すエレメント
107set ocidSetFooterElement to (refMe's NSXMLElement's elementWithName:("div"))
108set ocidAElement to refMe's NSXMLElement's elementWithName:("a")
109set ocidAddNode to (refMe's NSXMLNode's attributeWithName:("href") stringValue:("https://developer.apple.com/fonts/"))
110(ocidAElement's addAttribute:(ocidAddNode))
111set ocidAddNode to (refMe's NSXMLNode's attributeWithName:("target") stringValue:("_blank"))
112(ocidAElement's addAttribute:(ocidAddNode))
113set strContents to ("Fonts for Apple platforms") as text
114(ocidAElement's setStringValue:(strContents))
115(ocidSetFooterElement's addChild:(ocidAElement))
116###################
117#articleに渡すエレメント
118set ocidSetArticleElement to (refMe's NSXMLElement's elementWithName:("div"))
119set ocidH3Element to (refMe's NSXMLElement's elementWithName:("h3"))
120set strTime to doGetDateNo("yyyyMMdd") as text
121set strSetValue to (strTime & "時点のリスト") as text
122(ocidH3Element's setStringValue:(strSetValue))
123(ocidSetArticleElement's addChild:(ocidH3Element))
124###################
125#テーブル部生成開始
126set ocidTableElement to refMe's NSXMLElement's elementWithName:("table")
127###################
128#【caption】
129set ocidCaptionElement to refMe's NSXMLElement's elementWithName:("caption")
130ocidCaptionElement's setStringValue:("ATS(Apple Type Services)が使用中止(Disable)しているフォントリスト")
131ocidTableElement's addChild:(ocidCaptionElement)
132###################
133#【colgroup】
134set ocidColgroupElement to refMe's NSXMLElement's elementWithName:("colgroup")
135###################
136#【col】col生成
137set ocidAddElement to (refMe's NSXMLElement's elementWithName:("col"))
138set ocidAddNode to (refMe's NSXMLNode's attributeWithName:("title") stringValue:("No"))
139(ocidAddElement's addAttribute:(ocidAddNode))
140(ocidColgroupElement's addChild:(ocidAddElement))
141
142set ocidAddElement to (refMe's NSXMLElement's elementWithName:("col"))
143set ocidAddNode to (refMe's NSXMLNode's attributeWithName:("title") stringValue:("Postscript"))
144(ocidAddElement's addAttribute:(ocidAddNode))
145(ocidColgroupElement's addChild:(ocidAddElement))
146set ocidAddElement to (refMe's NSXMLElement's elementWithName:("col"))
147set ocidAddNode to (refMe's NSXMLNode's attributeWithName:("title") stringValue:("Full Name"))
148(ocidAddElement's addAttribute:(ocidAddNode))
149(ocidColgroupElement's addChild:(ocidAddElement))
150
151set ocidAddElement to (refMe's NSXMLElement's elementWithName:("col"))
152set ocidAddNode to (refMe's NSXMLNode's attributeWithName:("title") stringValue:("File Path"))
153(ocidAddElement's addAttribute:(ocidAddNode))
154(ocidColgroupElement's addChild:(ocidAddElement))
155set ocidAddElement to (refMe's NSXMLElement's elementWithName:("col"))
156set ocidAddNode to (refMe's NSXMLNode's attributeWithName:("title") stringValue:("LINK"))
157(ocidAddElement's addAttribute:(ocidAddNode))
158(ocidColgroupElement's addChild:(ocidAddElement))
159#テーブルエレメントに追加
160ocidTableElement's addChild:(ocidColgroupElement)
161###################
162#【thead】
163set ocidTheadElement to refMe's NSXMLElement's elementWithName:("thead")
164#TR
165set ocidTrElement to refMe's NSXMLElement's elementWithName:("tr")
166#TH
167set ocidAddElement to (refMe's NSXMLElement's elementWithName:("th"))
168set ocidAddNode to (refMe's NSXMLNode's attributeWithName:("title") stringValue:("No"))
169(ocidAddElement's addAttribute:(ocidAddNode))
170set ocidAddNode to (refMe's NSXMLNode's attributeWithName:("id") stringValue:("No"))
171(ocidAddElement's addAttribute:(ocidAddNode))
172set ocidAddNode to (refMe's NSXMLNode's attributeWithName:("scope") stringValue:("col"))
173(ocidAddElement's addAttribute:(ocidAddNode))
174(ocidAddElement's setStringValue:("\"))
175(ocidTrElement's addChild:(ocidAddElement))
176set ocidAddElement to (refMe's NSXMLElement's elementWithName:("th"))
177set ocidAddNode to (refMe's NSXMLNode's attributeWithName:("title") stringValue:("Postscript"))
178(ocidAddElement's addAttribute:(ocidAddNode))
179set ocidAddNode to (refMe's NSXMLNode's attributeWithName:("id") stringValue:("Postscript"))
180(ocidAddElement's addAttribute:(ocidAddNode))
181set ocidAddNode to (refMe's NSXMLNode's attributeWithName:("scope") stringValue:("col"))
182(ocidAddElement's addAttribute:(ocidAddNode))
183(ocidAddElement's setStringValue:("Postscript"))
184(ocidTrElement's addChild:(ocidAddElement))
185
186set ocidAddElement to (refMe's NSXMLElement's elementWithName:("th"))
187set ocidAddNode to (refMe's NSXMLNode's attributeWithName:("title") stringValue:("Full Name"))
188(ocidAddElement's addAttribute:(ocidAddNode))
189set ocidAddNode to (refMe's NSXMLNode's attributeWithName:("id") stringValue:("Full Name"))
190(ocidAddElement's addAttribute:(ocidAddNode))
191set ocidAddNode to (refMe's NSXMLNode's attributeWithName:("scope") stringValue:("col"))
192(ocidAddElement's addAttribute:(ocidAddNode))
193(ocidAddElement's setStringValue:("Full Name"))
194(ocidTrElement's addChild:(ocidAddElement))
195
196set ocidAddElement to (refMe's NSXMLElement's elementWithName:("th"))
197set ocidAddNode to (refMe's NSXMLNode's attributeWithName:("title") stringValue:("File Path"))
198(ocidAddElement's addAttribute:(ocidAddNode))
199set ocidAddNode to (refMe's NSXMLNode's attributeWithName:("id") stringValue:("File Path"))
200(ocidAddElement's addAttribute:(ocidAddNode))
201set ocidAddNode to (refMe's NSXMLNode's attributeWithName:("scope") stringValue:("col"))
202(ocidAddElement's addAttribute:(ocidAddNode))
203(ocidAddElement's setStringValue:("File Path"))
204(ocidTrElement's addChild:(ocidAddElement))
205set ocidAddElement to (refMe's NSXMLElement's elementWithName:("th"))
206set ocidAddNode to (refMe's NSXMLNode's attributeWithName:("title") stringValue:("LINK"))
207(ocidAddElement's addAttribute:(ocidAddNode))
208set ocidAddNode to (refMe's NSXMLNode's attributeWithName:("id") stringValue:("LINK"))
209(ocidAddElement's addAttribute:(ocidAddNode))
210set ocidAddNode to (refMe's NSXMLNode's attributeWithName:("scope") stringValue:("col"))
211(ocidAddElement's addAttribute:(ocidAddNode))
212(ocidAddElement's setStringValue:("LINK"))
213(ocidTrElement's addChild:(ocidAddElement))
214#TRをTHEADにセット
215ocidTheadElement's addChild:(ocidTrElement)
216#THEADをテーブルにセット
217ocidTableElement's addChild:(ocidTheadElement)
218########################################
219#【tbody】
220set ocidTbodyElement to refMe's NSXMLElement's elementWithName:("tbody")
221#ITEM
222set numCntArray to ocidSortedArray's |count|()
223#データ数繰り返し
224repeat with itemNo from 0 to (numCntArray - 1) by 1
225   #データ取り出し
226   set ocidLineString to (ocidSortedArray's objectAtIndex:(itemNo))
227   set ocidLineItemArray to (ocidLineString's componentsSeparatedByString:(strTab))
228   set strItemNo to (itemNo + 1) as text
229   ##############
230   #TRの開始
231   set ocidTrElement to (refMe's NSXMLElement's elementWithName:("tr"))
232   ####項番処理
233   set ocidThElement to (refMe's NSXMLElement's elementWithName:("th"))
234   set ocidAddNode to (refMe's NSXMLNode's attributeWithName:("title") stringValue:("項目番号:" & strItemNo))
235   (ocidThElement's addAttribute:(ocidAddNode))
236   set ocidAddNode to (refMe's NSXMLNode's attributeWithName:("headers") stringValue:("NO"))
237   (ocidThElement's addAttribute:(ocidAddNode))
238   set ocidAddNode to (refMe's NSXMLNode's attributeWithName:("scope") stringValue:("row"))
239   (ocidThElement's addAttribute:(ocidAddNode))
240   (ocidThElement's setStringValue:(strItemNo))
241   (ocidTrElement's addChild:(ocidThElement))
242   
243   
244   #
245   set ocidTdElement to (refMe's NSXMLElement's elementWithName:("td"))
246   set ocidAddNode to (refMe's NSXMLNode's attributeWithName:("title") stringValue:("Postscript"))
247   (ocidTdElement's addAttribute:(ocidAddNode))
248   set ocidAddNode to (refMe's NSXMLNode's attributeWithName:("headers") stringValue:("Postscript"))
249   (ocidTdElement's addAttribute:(ocidAddNode))
250   set strSetValue to (ocidLineItemArray's objectAtIndex:(0))
251   (ocidTdElement's setStringValue:(strSetValue))
252   (ocidTrElement's addChild:(ocidTdElement))
253   #
254   set ocidTdElement to (refMe's NSXMLElement's elementWithName:("td"))
255   set ocidAddNode to (refMe's NSXMLNode's attributeWithName:("title") stringValue:("Full Name"))
256   (ocidTdElement's addAttribute:(ocidAddNode))
257   set ocidAddNode to (refMe's NSXMLNode's attributeWithName:("headers") stringValue:("Full Name"))
258   (ocidTdElement's addAttribute:(ocidAddNode))
259   set strSetValue to (ocidLineItemArray's objectAtIndex:(1))
260   (ocidTdElement's setStringValue:(strSetValue))
261   (ocidTrElement's addChild:(ocidTdElement))
262   #
263   set ocidTdElement to (refMe's NSXMLElement's elementWithName:("td"))
264   set ocidAddNode to (refMe's NSXMLNode's attributeWithName:("title") stringValue:("File Path"))
265   (ocidTdElement's addAttribute:(ocidAddNode))
266   set ocidAddNode to (refMe's NSXMLNode's attributeWithName:("headers") stringValue:("File Path"))
267   (ocidTdElement's addAttribute:(ocidAddNode))
268   set strSetValue to (ocidLineItemArray's objectAtIndex:(2))
269   (ocidTdElement's setStringValue:(strSetValue))
270   (ocidTrElement's addChild:(ocidTdElement))
271   
272   #リンクはAdobeのURL
273   set ocidTdElement to (refMe's NSXMLElement's elementWithName:("td"))
274   set ocidAddNode to (refMe's NSXMLNode's attributeWithName:("title") stringValue:("LINK"))
275   (ocidTdElement's addAttribute:(ocidAddNode))
276   set ocidAddNode to (refMe's NSXMLNode's attributeWithName:("headers") stringValue:("LINK"))
277   (ocidTdElement's addAttribute:(ocidAddNode))
278   
279   set ocidAElement to (refMe's NSXMLElement's elementWithName:("a"))
280   set strSetValue to (ocidLineItemArray's objectAtIndex:(3))
281   set ocidAddNode to (refMe's NSXMLNode's attributeWithName:("href") stringValue:(strSetValue))
282   (ocidAElement's addAttribute:(ocidAddNode))
283   set ocidAddNode to (refMe's NSXMLNode's attributeWithName:("target") stringValue:("_blank"))
284   (ocidAElement's addAttribute:(ocidAddNode))
285   set strContents to ("LINK") as text
286   (ocidAElement's setStringValue:(strContents))
287   (ocidTdElement's addChild:(ocidAElement))
288   
289   (ocidTrElement's addChild:(ocidTdElement))
290   #
291   (ocidTbodyElement's addChild:(ocidTrElement))
292end repeat
293#TBODYをテーブルにセット
294ocidTableElement's addChild:(ocidTbodyElement)
295##############################
296#【tfoot】
297set ocidTfootElement to refMe's NSXMLElement's elementWithName:("tfoot")
298#TR
299set ocidTrElement to refMe's NSXMLElement's elementWithName:("tr")
300#colspan指定して1行でセット
301set ocidThElement to (refMe's NSXMLElement's elementWithName:("th"))
302set ocidAddNode to (refMe's NSXMLNode's attributeWithName:("title") stringValue:("テーブルの終わり"))
303(ocidThElement's addAttribute:(ocidAddNode))
304set ocidAddNode to (refMe's NSXMLNode's attributeWithName:("colspan") stringValue:("8"))
305(ocidThElement's addAttribute:(ocidAddNode))
306set ocidAddNode to (refMe's NSXMLNode's attributeWithName:("scope") stringValue:("row"))
307(ocidThElement's addAttribute:(ocidAddNode))
308#
309set strContents to ("項目数 : " & (numCntArray as text) & "") as text
310(ocidThElement's setStringValue:(strContents))
311#THをTRにセットして
312ocidTrElement's addChild:(ocidThElement)
313#TRをTFOOTにセット
314ocidTfootElement's addChild:(ocidTrElement)
315#TFOOTをテーブルにセット
316ocidTableElement's addChild:(ocidTfootElement)
317#テーブルをアーティクルにセット
318ocidSetArticleElement's addChild:(ocidTableElement)
319##############################
320#HTMLにする
321##############################
322set ocidHTML to doMakeRootElement({ocidSetHeaderElement, ocidSetArticleElement, ocidSetFooterElement})
323#####保存
324#読み取りやすい表示
325set ocidXMLdata to ocidHTML's XMLDataWithOptions:(refMe's NSXMLNodePrettyPrint)
326set listDone to ocidXMLdata's writeToURL:(ocidSaveHTMLPathURL) options:(refMe's NSDataWritingAtomic) |error|:(reference)
327####ブラウザで開く(エラーしなければSafariで開く)
328set strAppPath to ("/Applications/Safari.app") as text
329set ocidAppPathStr to refMe's NSString's stringWithString:(strAppPath)
330set ocidAppPath to ocidAppPathStr's stringByStandardizingPath()
331set ocidAppPathURL to refMe's NSURL's fileURLWithPath:(ocidAppPath) isDirectory:(false)
332try
333   set aliasFilePath to (ocidSaveHTMLPathURL's absoluteURL()) as alias
334   tell application "Safari"
335      open location aliasFilePath
336   end tell
337on error strErrMsg number numErrNo
338   
339   set ocidURLsArray to refMe's NSMutableArray's alloc()'s init()
340   ocidURLsArray's addObject:(ocidSaveHTMLPathURL)
341   #
342   set appWorkspace to refMe's NSWorkspace's sharedWorkspace()
343   set ocidConfig to (refMe's NSWorkspaceOpenConfiguration's configuration())
344   appWorkspace's openURLs:(ocidURLsArray) withApplicationAtURL:(ocidAppPathURL) configuration:(ocidConfig) completionHandler:(missing value)
345   
346end try
347######################
348#開く
349set appSharedWorkspace to refMe's NSWorkspace's sharedWorkspace()
350set boolDone to appSharedWorkspace's openURL:(ocidHTMLSaveDirPathURL)
351
352return true
353######################
354#日付番号
355to doGetDateNo(argFormatStrings)
356   ####日付情報の取得
357   set ocidDate to refMe's NSDate's |date|()
358   ###日付のフォーマットを定義
359   set ocidNSDateFormatter to refMe's NSDateFormatter's alloc()'s init()
360   ocidNSDateFormatter's setLocale:(refMe's NSLocale's localeWithLocaleIdentifier:"ja_JP_POSIX")
361   ocidNSDateFormatter's setDateFormat:(argFormatStrings)
362   set ocidDateAndTime to ocidNSDateFormatter's stringFromDate:(ocidDate)
363   set strDateAndTime to ocidDateAndTime as text
364   return strDateAndTime
365end doGetDateNo
366
367############################################################
368# 基本的なHTMLの構造
369(*
370doMakeRootElement({argHeaderContents, argArticleContents, argFooterContents})
371HTMLのBODY部
372header
373article
374footerにそれぞれAddchildするデータをリストで渡す
375戻り値はRootエレメントにセットされた
376NSXMLDocumentを戻すので 保存すればOK
377*)
378############################################################
379to doMakeRootElement({argHeaderContents, argArticleContents, argFooterContents})
380   #XML初期化
381   set ocidXMLDoc to refMe's NSXMLDocument's alloc()'s init()
382   ocidXMLDoc's setDocumentContentKind:(refMe's NSXMLDocumentHTMLKind)
383   # DTD付与
384   set ocidDTD to refMe's NSXMLDTD's alloc()'s init()
385   ocidDTD's setName:("html")
386   ocidXMLDoc's setDTD:(ocidDTD)
387   #
388   set ocidRootElement to refMe's NSXMLElement's elementWithName:("html")
389   set ocidAddNode to refMe's NSXMLNode's attributeWithName:("lang") stringValue:("ja")
390   ocidRootElement's addAttribute:(ocidAddNode)
391   #
392   set ocidHeadElement to refMe's NSXMLElement's elementWithName:("head")
393   #
394   set ocidAddElement to refMe's NSXMLElement's elementWithName:("title")
395   ocidAddElement's setStringValue:("ATS(Apple Type Services)フォントリスト")
396   ocidHeadElement's addChild:(ocidAddElement)
397   # http-equiv
398   set ocidAddElement to refMe's NSXMLElement's elementWithName:("meta")
399   set ocidAddNode to refMe's NSXMLNode's attributeWithName:("http-equiv") stringValue:("Content-Type")
400   ocidAddElement's addAttribute:(ocidAddNode)
401   set ocidAddNode to refMe's NSXMLNode's attributeWithName:("content") stringValue:("text/html; charset=UTF-8")
402   ocidAddElement's addAttribute:(ocidAddNode)
403   ocidHeadElement's addChild:(ocidAddElement)
404   #
405   set ocidAddElement to refMe's NSXMLElement's elementWithName:("meta")
406   set ocidAddNode to refMe's NSXMLNode's attributeWithName:("name") stringValue:("viewport")
407   ocidAddElement's addAttribute:(ocidAddNode)
408   set ocidAddNode to refMe's NSXMLNode's attributeWithName:("content") stringValue:("width=720")
409   ocidAddElement's addAttribute:(ocidAddNode)
410   ocidHeadElement's addChild:(ocidAddElement)
411   #
412   set ocidAddElement to refMe's NSXMLElement's elementWithName:("style")
413   ocidAddElement's setStringValue:("body { margin: 10px; background-color: #FFFFFF; } table { border-spacing: 0; caption-side: top; font-family: system-ui; } thead th { border: solid 1px #666666; padding: .5ch 1ch; border-block-width: 1px 0; border-inline-width: 1px 0; &:first-of-type { border-start-start-radius: .5em } &:last-of-type { border-start-end-radius: .5em; border-inline-end-width: 1px } } tbody th { word-wrap: break-all;overflow-x: hidden;} tbody td { word-wrap: break-all;overflow-wrap: anywhere;text-overflow: ellipsis;border-spacing: 0; border: solid 1px #666666; padding: .5ch 1ch; border-block-width: 1px 0; border-inline-width: 1px 0; &:last-of-type { border-inline-end-width: 1px } } tbody th { border-spacing: 0; border: solid 1px #666666; padding: .5ch 1ch; border-block-width: 1px 0; border-inline-width: 1px 0; } tbody tr:nth-of-type(odd) { background: #F2F2F2; } .kind_string { font-size: 0.75em; } .date_string { font-size: 0.5em; } tfoot th { border: solid 1px #666666; padding: .5ch 1ch; &:first-of-type { border-end-start-radius: .5em } &:last-of-type { border-end-end-radius: .5em; border-inline-end-width: 1px } }")
414   ocidHeadElement's addChild:(ocidAddElement)
415   ocidRootElement's addChild:(ocidHeadElement)
416   #
417   #ボディエレメント
418   set ocidBodyElement to refMe's NSXMLElement's elementWithName:("body")
419   #ヘッダー
420   set ocidHeaderElement to refMe's NSXMLElement's elementWithName:("header")
421   set ocidAddNode to refMe's NSXMLNode's attributeWithName:("id") stringValue:("header")
422   ocidHeaderElement's addAttribute:(ocidAddNode)
423   set ocidAddNode to refMe's NSXMLNode's attributeWithName:("class") stringValue:("body_header")
424   ocidHeaderElement's addAttribute:(ocidAddNode)
425   ocidHeaderElement's addChild:(argHeaderContents)
426   ocidBodyElement's addChild:(ocidHeaderElement)
427   #アーティクル
428   set ocidArticleElement to refMe's NSXMLElement's elementWithName:("article")
429   set ocidAddNode to refMe's NSXMLNode's attributeWithName:("id") stringValue:("article")
430   ocidArticleElement's addAttribute:(ocidAddNode)
431   set ocidAddNode to refMe's NSXMLNode's attributeWithName:("class") stringValue:("body_article")
432   ocidArticleElement's addAttribute:(ocidAddNode)
433   ocidArticleElement's addChild:(argArticleContents)
434   ocidBodyElement's addChild:(ocidArticleElement)
435   #フッター
436   set ocidFooterElement to refMe's NSXMLElement's elementWithName:("footer")
437   set ocidAddNode to refMe's NSXMLNode's attributeWithName:("id") stringValue:("footer")
438   ocidFooterElement's addAttribute:(ocidAddNode)
439   set ocidAddNode to refMe's NSXMLNode's attributeWithName:("class") stringValue:("body_footer")
440   ocidFooterElement's addAttribute:(ocidAddNode)
441   ocidFooterElement's addChild:(argFooterContents)
442   ocidBodyElement's addChild:(ocidFooterElement)
443   #ボディをROOTエレメントにセット
444   ocidRootElement's addChild:(ocidBodyElement)
445   #ROOTをXMLにセット
446   ocidXMLDoc's setRootElement:(ocidRootElement)
447   #値を戻す
448   return ocidXMLDoc
449end doMakeRootElement
AppleScriptで生成しました