/// <summary>
        /// Print Schema Reference Guide v1.0 Appendix E.3.8 - Page Media Size
        /// </summary>
        public void WritePageMediaSizeFeature(
            IList <short> paperSizeCodes,
            IList <string> paperSizeDisplayNames,
            IList <DC_PAPER_SIZE> paperSizes)
        {
            if (paperSizeCodes.Count > 0)
            {
                WriteStartFeature(
                    PrintSchemaNamespaces.StandardKeywordSet, "PageMediaSize",
                    PrintSchemaNamespaces.StandardKeywordSet, "PickOne",
                    COMPSTUISR.IDS_CPSUI_FORMNAME);
                {
                    for (int i = 0; i < paperSizeCodes.Count; i++)
                    {
                        string            optionNamespace = null;
                        string            optionLocalName = null;
                        PageMediaSizeName mediaSizeEnum;
                        if (PrintSchemaShim.TryGetPageMediaSizeNameFromPaperSizeCode(paperSizeCodes[i], out mediaSizeEnum))
                        {
                            optionNamespace = PrintSchemaNamespaces.StandardKeywordSet;
                            optionLocalName = mediaSizeEnum.ToString(CultureInfo.InvariantCulture);
                        }
                        else
                        {
                            optionNamespace = this._privateNamespace;
                            optionLocalName = null;
                        }


                        if (optionLocalName != null &&
                            ((i < paperSizeDisplayNames.Count) || (i < paperSizes.Count)))
                        {
                            string optionDisplayName = (i < paperSizeDisplayNames.Count) ? paperSizeDisplayNames[i] : null;
                            WriteStartOption(optionNamespace, optionLocalName, optionDisplayName, "None");
                            {
                                if (i < paperSizes.Count)
                                {
                                    WriteStartScoredProperty(PrintSchemaNamespaces.StandardKeywordSet, "MediaSizeWidth");
                                    {
                                        WriteValue("xsd:integer", XmlConvert.ToString(paperSizes[i].Width));
                                    }
                                    WriteEndScoredProperty();

                                    WriteStartScoredProperty(PrintSchemaNamespaces.StandardKeywordSet, "MediaSizeHeight");
                                    {
                                        WriteValue("xsd:integer", XmlConvert.ToString(paperSizes[i].Height));
                                    }
                                    WriteEndScoredProperty();
                                }
                            }
                            WriteEndOption();
                        }
                    }
                }
                WriteEndFeature();
            }
        }