1 /* 2 * Licensed to the Apache Software Foundation (ASF) under one 3 * or more contributor license agreements. See the NOTICE file 4 * distributed with this work for additional information 5 * regarding copyright ownership. The ASF licenses this file 6 * to you under the Apache License, Version 2.0 (the "License"); 7 * you may not use this file except in compliance with the License. 8 * You may obtain a copy of the License at 9 * 10 * http://www.apache.org/licenses/LICENSE-2.0 11 * 12 * Unless required by applicable law or agreed to in writing, software 13 * distributed under the License is distributed on an "AS IS" BASIS, 14 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 15 * See the License for the specific language governing permissions and 16 * limitations under the License. 17 */ 18 /* 19 * $Id: XSLOutputAttributes.java 468654 2006-10-28 07:09:23Z minchau $ 20 */ 21 package org.apache.xml.serializer; 22 23 import java.util.Vector; 24 25 /** 26 * This interface has methods associated with the XSLT xsl:output attribues 27 * specified in the stylesheet that effect the format of the document output. 28 * 29 * In an XSLT stylesheet these attributes appear for example as: 30 * <pre> 31 * <xsl:output method="xml" omit-xml-declaration="no" indent="yes"/> 32 * </pre> 33 * The xsl:output attributes covered in this interface are: 34 * <pre> 35 * version 36 * encoding 37 * omit-xml-declarations 38 * standalone 39 * doctype-public 40 * doctype-system 41 * cdata-section-elements 42 * indent 43 * media-type 44 * </pre> 45 * 46 * The one attribute not covered in this interface is <code>method</code> as 47 * this value is implicitly chosen by the serializer that is created, for 48 * example ToXMLStream vs. ToHTMLStream or another one. 49 * 50 * This interface is only used internally within Xalan. 51 * 52 * @xsl.usage internal 53 */ 54 interface XSLOutputAttributes 55 { 56 /** 57 * Returns the previously set value of the value to be used as the public 58 * identifier in the document type declaration (DTD). 59 * 60 *@return the public identifier to be used in the DOCTYPE declaration in the 61 * output document. 62 */ getDoctypePublic()63 public String getDoctypePublic(); 64 /** 65 * Returns the previously set value of the value to be used 66 * as the system identifier in the document type declaration (DTD). 67 * @return the system identifier to be used in the DOCTYPE declaration in 68 * the output document. 69 * 70 */ getDoctypeSystem()71 public String getDoctypeSystem(); 72 /** 73 * @return the character encoding to be used in the output document. 74 */ getEncoding()75 public String getEncoding(); 76 /** 77 * @return true if the output document should be indented to visually 78 * indicate its structure. 79 */ getIndent()80 public boolean getIndent(); 81 82 /** 83 * @return the number of spaces to indent for each indentation level. 84 */ getIndentAmount()85 public int getIndentAmount(); 86 /** 87 * @return the mediatype the media-type or MIME type associated with the 88 * output document. 89 */ getMediaType()90 public String getMediaType(); 91 /** 92 * @return true if the XML declaration is to be omitted from the output 93 * document. 94 */ getOmitXMLDeclaration()95 public boolean getOmitXMLDeclaration(); 96 /** 97 * @return a value of "yes" if the <code>standalone</code> delaration is to 98 * be included in the output document. 99 */ getStandalone()100 public String getStandalone(); 101 /** 102 * @return the version of the output format. 103 */ getVersion()104 public String getVersion(); 105 106 107 108 109 110 111 /** 112 * Sets the value coming from the xsl:output cdata-section-elements 113 * stylesheet property. 114 * 115 * This sets the elements whose text elements are to be output as CDATA 116 * sections. 117 * @param URI_and_localNames pairs of namespace URI and local names that 118 * identify elements whose text elements are to be output as CDATA sections. 119 * The namespace of the local element must be the given URI to match. The 120 * qName is not given because the prefix does not matter, only the namespace 121 * URI to which that prefix would map matters, so the prefix itself is not 122 * relevant in specifying which elements have their text to be output as 123 * CDATA sections. 124 */ setCdataSectionElements(Vector URI_and_localNames)125 public void setCdataSectionElements(Vector URI_and_localNames); 126 127 /** Set the value coming from the xsl:output doctype-public and doctype-system stylesheet properties 128 * @param system the system identifier to be used in the DOCTYPE declaration 129 * in the output document. 130 * @param pub the public identifier to be used in the DOCTYPE declaration in 131 * the output document. 132 */ setDoctype(String system, String pub)133 public void setDoctype(String system, String pub); 134 135 /** Set the value coming from the xsl:output doctype-public stylesheet attribute. 136 * @param doctype the public identifier to be used in the DOCTYPE 137 * declaration in the output document. 138 */ setDoctypePublic(String doctype)139 public void setDoctypePublic(String doctype); 140 /** Set the value coming from the xsl:output doctype-system stylesheet attribute. 141 * @param doctype the system identifier to be used in the DOCTYPE 142 * declaration in the output document. 143 */ setDoctypeSystem(String doctype)144 public void setDoctypeSystem(String doctype); 145 /** 146 * Sets the character encoding coming from the xsl:output encoding stylesheet attribute. 147 * @param encoding the character encoding 148 */ setEncoding(String encoding)149 public void setEncoding(String encoding); 150 /** 151 * Sets the value coming from the xsl:output indent stylesheet 152 * attribute. 153 * @param indent true if the output document should be indented to visually 154 * indicate its structure. 155 */ setIndent(boolean indent)156 public void setIndent(boolean indent); 157 /** 158 * Sets the value coming from the xsl:output media-type stylesheet attribute. 159 * @param mediatype the media-type or MIME type associated with the output 160 * document. 161 */ setMediaType(String mediatype)162 public void setMediaType(String mediatype); 163 /** 164 * Sets the value coming from the xsl:output omit-xml-declaration stylesheet attribute 165 * @param b true if the XML declaration is to be omitted from the output 166 * document. 167 */ setOmitXMLDeclaration(boolean b)168 public void setOmitXMLDeclaration(boolean b); 169 /** 170 * Sets the value coming from the xsl:output standalone stylesheet attribute. 171 * @param standalone a value of "yes" indicates that the 172 * <code>standalone</code> delaration is to be included in the output 173 * document. 174 */ setStandalone(String standalone)175 public void setStandalone(String standalone); 176 /** 177 * Sets the value coming from the xsl:output version attribute. 178 * @param version the version of the output format. 179 */ setVersion(String version)180 public void setVersion(String version); 181 182 /** 183 * Get the value for a property that affects seraialization, 184 * if a property was set return that value, otherwise return 185 * the default value, otherwise return null. 186 * @param name The name of the property, which is just the local name 187 * if it is in no namespace, but is the URI in curly braces followed by 188 * the local name if it is in a namespace, for example: 189 * <ul> 190 * <li> "encoding" 191 * <li> "method" 192 * <li> "{http://xml.apache.org/xalan}indent-amount" 193 * <li> "{http://xml.apache.org/xalan}line-separator" 194 * </ul> 195 * @return The value of the parameter 196 */ getOutputProperty(String name)197 public String getOutputProperty(String name); 198 /** 199 * Get the default value for a property that affects seraialization, 200 * or null if there is none. It is possible that a non-default value 201 * was set for the property, however the value returned by this method 202 * is unaffected by any non-default settings. 203 * @param name The name of the property. 204 * @return The default value of the parameter, or null if there is no default value. 205 */ getOutputPropertyDefault(String name)206 public String getOutputPropertyDefault(String name); 207 /** 208 * Set the non-default value for a property that affects seraialization. 209 * @param name The name of the property, which is just the local name 210 * if it is in no namespace, but is the URI in curly braces followed by 211 * the local name if it is in a namespace, for example: 212 * <ul> 213 * <li> "encoding" 214 * <li> "method" 215 * <li> "{http://xml.apache.org/xalan}indent-amount" 216 * <li> "{http://xml.apache.org/xalan}line-separator" 217 * </ul> 218 * @val The non-default value of the parameter 219 */ setOutputProperty(String name, String val)220 public void setOutputProperty(String name, String val); 221 222 /** 223 * Set the default value for a property that affects seraialization. 224 * @param name The name of the property, which is just the local name 225 * if it is in no namespace, but is the URI in curly braces followed by 226 * the local name if it is in a namespace, for example: 227 * <ul> 228 * <li> "encoding" 229 * <li> "method" 230 * <li> "{http://xml.apache.org/xalan}indent-amount" 231 * <li> "{http://xml.apache.org/xalan}line-separator" 232 * </ul> 233 * @val The default value of the parameter 234 */ setOutputPropertyDefault(String name, String val)235 public void setOutputPropertyDefault(String name, String val); 236 } 237