docb_xmerl_xml_cb.erl

来自「OTP是开放电信平台的简称」· ERL 代码 · 共 89 行

ERL
89
字号
%% ``The contents of this file are subject to the Erlang Public License,%% Version 1.1, (the "License"); you may not use this file except in%% compliance with the License. You should have received a copy of the%% Erlang Public License along with this software. If not, it can be%% retrieved via the world wide web at http://www.erlang.org/.%%%% Software distributed under the License is distributed on an "AS IS"%% basis, WITHOUT WARRANTY OF ANY KIND, either expressed or implied. See%% the Licence for the specific language governing rights and limitations%% under the License.%%%% The Initial Developer of the Original Code is Ericsson AB.%% Portions created by Ericsson are Copyright 1999-2006, Ericsson AB.%% All Rights Reserved.创%%%%     $Id$%%-module(docb_xmerl_xml_cb).%% This is the callback module for exporting XHTML to a DocBuilder%% erlref or chapter document in XML format.%% See docb_edoc_xml_cb.erl for further information.%%%% The origin of this file is the xmerl module xmerl_otpsgml.erl%% written by Ulf Wiger and Richard Carlsson.-export(['#xml-inheritance#'/0]).-export(['#root#'/4,	 '#element#'/5,	 '#text#'/1]).-include("xmerl.hrl").'#xml-inheritance#'() ->    [xmerl_xml].'#root#'(Data, _Attrs, [], _E) ->     ["<",DTD,">"] = hd(hd(Data)),    ["<?xml version=\"1.0\" encoding=\"latin1\" ?>\n",     "<!DOCTYPE "++DTD++" SYSTEM \""++DTD++".dtd\">\n",     Data].'#element#'(Tag, Data, Attrs, _Parents, _E) ->    {NewTag, NewAttrs} = convert_tag(Tag, Attrs),    xmerl_lib:markup(NewTag, NewAttrs, Data).'#text#'(Text) ->    xmerl_lib:export_text(Text).%% Utility functionsconvert_tag(a, [Attr]) ->    case Attr#xmlAttribute.name of	href ->	    Val = Attr#xmlAttribute.value,	    case is_url(Val) of		true ->		    {url, [Attr]};		false ->		    {seealso, [Attr#xmlAttribute{name=marker}]}	    end;	name ->	    {marker, [Attr#xmlAttribute{name=id}]}    end;convert_tag(b, Attrs)          -> {em, Attrs};convert_tag(blockquote, Attrs) -> {quote, Attrs};convert_tag(code, Attrs)       -> {c, Attrs};convert_tag(dd, Attrs)         -> {item, Attrs};convert_tag(dl, Attrs)         -> {taglist, Attrs};convert_tag(dt, Attrs)         -> {tag, Attrs};convert_tag(li, Attrs)         -> {item, Attrs};convert_tag(ol, Attrs)         -> {list, Attrs};convert_tag(strong, Attrs)     -> {em, Attrs};convert_tag(td, Attrs)         -> {cell, Attrs};convert_tag(tr, Attrs)         -> {row, Attrs};convert_tag(tt, Attrs)         -> {c, Attrs};convert_tag(ul, Attrs)         -> {list, Attrs};convert_tag(underline, Attrs)  -> {em, Attrs};convert_tag(Tag, Attrs)        -> {Tag, Attrs}.is_url("http:"++_) -> true;is_url("../"++_) -> true;is_url(FileRef) ->    case filename:extension(FileRef) of	"" -> false; % no extension = xml file, DocBuilder resolves	_Ext -> true % extension, DocBuilder must not resolve    end.

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?